package cc.blynk.integration.http;
import cc.blynk.integration.BaseTest;
import cc.blynk.server.api.http.HttpAPIServer;
import cc.blynk.server.core.BaseServer;
import org.asynchttpclient.AsyncHttpClient;
import org.asynchttpclient.DefaultAsyncHttpClient;
import org.asynchttpclient.DefaultAsyncHttpClientConfig;
import org.asynchttpclient.Response;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.List;
import java.util.concurrent.Future;
import static org.junit.Assert.assertEquals;
/**
* The Blynk Project.
* Created by Dmitriy Dumanskiy.
* Created on 24.12.15.
*/
@RunWith(MockitoJUnitRunner.class)
@Ignore
public class HttpAPIPinsAsyncClientPerformanceTest extends BaseTest {
private static BaseServer httpServer;
private static AsyncHttpClient httpclient;
private static String httpServerUrl;
@AfterClass
public static void shutdown() throws Exception {
httpclient.close();
httpServer.close();
}
@Before
public void init() throws Exception {
if (httpServer == null) {
httpServer = new HttpAPIServer(holder).start();
httpServerUrl = String.format("http://localhost:%s/", 8080);
httpclient = new DefaultAsyncHttpClient(
new DefaultAsyncHttpClientConfig.Builder()
.setUserAgent("")
.setKeepAlive(true)
.build()
);
}
}
//----------------------------GET METHODS SECTION
@Test
public void testPutGetNonExistingPin() throws Exception {
Future<Response> f = httpclient.preparePut(httpServerUrl + "9876f5675bcd4b149ffbc918e45c3534/pin/v10")
.setHeader("Content-Type", "application/json")
.setBody("[\"100\"]")
.execute();
Response response = f.get();
assertEquals(200, response.getStatusCode());
while (true) {
f = httpclient.prepareGet(httpServerUrl + "9876f5675bcd4b149ffbc918e45c3534/pin/v10").execute();
response = f.get();
assertEquals(200, response.getStatusCode());
List<String> values = consumeJsonPinValues(response.getResponseBody());
assertEquals(1, values.size());
assertEquals("100", values.get(0));
Thread.sleep(50);
}
}
}