/*
* Copyright 2017 Huawei Technologies Co., Ltd.
*
* 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 org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.restclient;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.zip.GZIPInputStream;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
//import org.eclipse.jetty.client.HttpRequestListeners;
//import org.eclipse.jetty.client.CachedExchange;
import org.eclipse.jetty.client.HttpDestination;
//import org.eclipse.jetty.client.HttpExchange;
//import org.eclipse.jetty.http.HttpFields;
//import org.eclipse.jetty.http.HttpHeaders;
//import org.eclipse.jetty.io.Buffer;
//import org.eclipse.jetty.io.ByteArrayBuffer;
import org.eclipse.jetty.util.StringUtil;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import mockit.Mock;
import mockit.MockUp;
import mockit.Mocked;
import mockit.integration.junit4.JMockit;
/**
*
*
*
*
* @author
* @version
*/
@RunWith(JMockit.class)
public class TestRestHttpContentExchange {
@Mocked
HttpDestination mockedDest;
@Rule
public ExpectedException thrown = ExpectedException.none();
/**
*
*
* @throws java.lang.Exception
* @since
*/
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
/**
*
*
* @throws java.lang.Exception
* @since
*/
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
/**
*
*
* @throws java.lang.Exception
* @since
*/
@Before
public void setUp() throws Exception {
}
/**
*
*
* @throws java.lang.Exception
* @since
*/
@After
public void tearDown() throws Exception {
LogManager.getLogger(RestHttpContentExchange.class).atLevel(Level.ERROR);
}
/**
*
*
* @throws IOException
* @since
*/
@Test
public void testGetResponse() throws IOException {
RestHttpContentExchange exchange = new RestHttpContentExchange();
int statusCode= exchange.getResponse().getStatus();
assertEquals(0,statusCode);
}
// @Test
// public void testOnRequestCommitted() throws IOException {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
// exchange.onRequestCommitted();
//
// LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG);
// exchange.onRequestCommitted();
// }
//
// /**
// *
// *
// * @throws IOException
// * @since
// */
// @Test
// public void testOnRequestComplete() throws IOException {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
// exchange.onRequestComplete();
//
// LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG);
// exchange.onRequestComplete();
// }
//
// /**
// *
// *
// * @throws Exception
// * @since
// */
// @Test
// public void testOnResponseComplete() throws Exception {
// RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
// exchange.onResponseComplete();
//
// LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG);
// exchange.onResponseComplete();
//
// final AtomicInteger isCallback = new AtomicInteger(0);
// final AtomicInteger isException = new AtomicInteger(0);
// final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
//
// @Override
// public void callback(final RestfulResponse response) {
// isCallback.set(1);
// }
//
// @Override
// public void handleExcepion(final Throwable e) {
// isException.set(1);
// }
//
// };
//
// final Field statusField = HttpExchange.class.getDeclaredField("_status");
// statusField.setAccessible(true);
// exchange = new RestHttpContentExchange(false, callback);
// statusField.set(exchange, new AtomicInteger(200));
// exchange.setAddress(new HttpRequestListeners("localhost", 9999));
// exchange.setRequestURI("/the/request/uri");
// exchange.onResponseComplete();
// assertEquals(1, isCallback.get());
// assertEquals(0, isException.get());
// }
//
// /**
// *
// *
// * @throws Exception
// * @since
// */
// @Test
// @Ignore
// public void testDecompressGzipToStr() throws Exception {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
//
// final InputStream stream = ClassLoader.getSystemResourceAsStream("sample.txt.gz");
// final byte[] binaryData = new byte[1024];
// stream.read(binaryData);
// final String expected = "sample data.";
//
// final String actual = exchange.decompressGzipToStr(binaryData);
//
// assertEquals(actual, expected);
//
// new MockUp() {
//
// @Mock
// public int read() throws Exception {
// throw new IOException();
// }
//
// @Mock
// public int read(final byte abyte0[], final int i, final int j) {
//
// return -1;
// }
//
// };
//
// thrown.expect(IOException.class);
// exchange.decompressGzipToStr(binaryData);
// }
//
// /**
// *
// *
// * @throws Exception
// * @since
// */
// @Test
// @Ignore
// public void testDecompressGzipToStrException() throws Exception {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
//
// final InputStream stream = ClassLoader.getSystemResourceAsStream("sample.txt.gz");
// final byte[] binaryData = new byte[1024];
// stream.read(binaryData);
// final String expected = "sample data.";
//
// new MockUp() {
//
// @Mock
// public void close() throws IOException {
// throw new IOException();
// }
//
// };
//
// new MockUp() {
//
// @Mock
// public void close() throws IOException {
// throw new IOException();
// }
//
// };
//
// new MockUp() {
//
// @Mock
// public void close() throws IOException {
// throw new IOException();
// }
//
// };
//
// final String actual = exchange.decompressGzipToStr(binaryData);
// assertEquals(actual, expected);
// }
//
// /**
// *
// *
// * @throws Exception
// * @since
// */
// @Test
// public void testDecompressGzipToStrNull() throws Exception {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
// final String expected = "";
// final String actual = exchange.decompressGzipToStr(null);
//
// assertEquals(actual, expected);
// }
//
// /**
// *
// *
// * @throws Exception
// * @since
// */
// @Test
// public void testOnResponseHeaderBufferBuffer() throws Exception {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
//
// final Buffer name = new ByteArrayBuffer("key");
// final Buffer value = new ByteArrayBuffer("value");
// exchange.onResponseHeader(name, value);
//
// new MockUp() {
//
// @Mock
// public int getOrdinal(final Buffer buffer) {
// return HttpHeaders.CONTENT_ENCODING_ORDINAL;
// }
//
// };
// exchange.onResponseHeader(name, value);
//
// new MockUp() {
//
// @Mock
// public String asciiToLowerCase(final String s) {
// return "gzip";
// }
//
// };
// exchange.onResponseHeader(name, value);
//
// }
//
// /**
// *
// *
// * @since
// */
// @Test
// public void testOnExceptionThrowable() {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
// exchange.onException(new Exception());
// }
//
// /**
// *
// *
// * @since
// */
// @Test
// public void testOnExceptionThrowableWithCallback() {
// final AtomicInteger isCallback = new AtomicInteger(0);
// final AtomicInteger isException = new AtomicInteger(0);
// final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
//
// @Override
// public void callback(final RestfulResponse response) {
// isCallback.set(1);
// }
//
// @Override
// public void handleExcepion(final Throwable e) {
// isException.set(1);
// }
//
// };
// final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
// exchange.onException(new Exception());
// assertEquals(0, isCallback.get());
// assertEquals(1, isException.get());
// }
//
// /**
// *
// *
// * @since
// */
// @Test
// public void testOnConnectionFailedThrowable() {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
// exchange.onConnectionFailed(new Exception());
// }
//
// /**
// *
// *
// * @since
// */
// @Test
// public void testOnConnectionFailedThrowableException() {
// final AtomicInteger isCallback = new AtomicInteger(0);
// final AtomicInteger isException = new AtomicInteger(0);
// final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
//
// @Override
// public void callback(final RestfulResponse response) {
// isCallback.set(1);
// }
//
// @Override
// public void handleExcepion(final Throwable e) {
// isException.set(1);
// }
//
// };
// final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
// exchange.onConnectionFailed(new Exception());
// assertEquals(0, isCallback.get());
// assertEquals(1, isException.get());
// }
//
// /**
// *
// *
// * @since
// */
// @Test
// public void testExpireHttpDestination() {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(true, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
// exchange.expire(mockedDest);
// }
//
// /**
// *
// *
// * @throws Exception
// * @since
// */
// @Test
// public void testExpireHttpDestinationException() throws Exception {
// final AtomicInteger isCallback = new AtomicInteger(0);
// final AtomicInteger isException = new AtomicInteger(0);
// final List thrSet = new ArrayList();
// final RestfulAsyncCallback callback = new RestfulAsyncCallback() {
//
// @Override
// public void callback(final RestfulResponse response) {
// isCallback.set(1);
// }
//
// @Override
// public void handleExcepion(final Throwable e) {
// isException.set(1);
// thrSet.add(e);
// }
//
// };
// final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
// exchange.expire(mockedDest);
// assertEquals(0, isCallback.get());
// assertEquals(1, isException.get());
// assertEquals(1, thrSet.size());
// final Throwable t = thrSet.get(0);
// assertEquals(ServiceException.class, t.getClass());
// }
//
// /**
// *
// *
// * @throws Exception
// * @since
// */
// @Test
// public void testIsGzip() throws Exception {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
//
// final Buffer name = new ByteArrayBuffer("key");
// final Buffer value = new ByteArrayBuffer("value");
//
// new MockUp() {
//
// @Mock
// public int getOrdinal(final Buffer buffer) {
// return HttpHeaders.CONTENT_ENCODING_ORDINAL;
// }
//
// };
// exchange.onResponseHeader(name, value);
// assertFalse(exchange.isGzip());
//
// new MockUp() {
//
// @Mock
// public String asciiToLowerCase(final String s) {
// return "gzip";
// }
//
// };
// exchange.onResponseHeader(name, value);
// assertTrue(exchange.isGzip());
// }
//
// /**
// *
// *
// * @throws Exception
// * @since
// */
// @Test
// public void testGetResponse() throws Exception {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
//
// final Field statusField = HttpExchange.class.getDeclaredField("_status");
// statusField.setAccessible(true);
// statusField.set(exchange, new AtomicInteger(200));
//
// RestfulResponse response = exchange.getResponse();
// assertEquals(0, response.getStatus());
//
// final HttpFields fields = new HttpFields();
// final Field headerFields = CachedExchange.class.getDeclaredField("_responseFields");
// headerFields.setAccessible(true);
// headerFields.set(exchange, fields);
// response = exchange.getResponse();
// assertEquals(0, response.getStatus());
// fields.add("Content-Type", "application/json");
// fields.add("Content-Encode", "UTF-8");
// response = exchange.getResponse();
// assertEquals(0, response.getStatus());
// }
//
// /**
// *
// *
// * @throws Exception
// * @since
// */
// @Test
// public void testGetResponseGzip() throws Exception {
// final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null);
// final HttpRequestListeners address = new HttpRequestListeners("localhost", 9999);
// exchange.setAddress(address);
// exchange.setRequestURI("/the/request/uri");
// new MockUp() {
//
// @Mock
// public boolean isGzip() {
// return true;
// }
// };
// final Field statusField = HttpExchange.class.getDeclaredField("_status");
// statusField.setAccessible(true);
// statusField.set(exchange, new AtomicInteger(200));
//
// final RestfulResponse response = exchange.getResponse();
// assertEquals(0, response.getStatus());
// }
}