Package com.hmsonline.virgil

Source Code of com.hmsonline.virgil.HttpTest

package com.hmsonline.virgil;

import static org.junit.Assert.assertEquals;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.DeleteMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.hmsonline.virgil.ext.PatchMethod;

public class HttpTest extends VirgilServerTest {
  private static final String BASE_URL = "http://localhost:8080/virgil/data/";
  private static final String COLUMN_FAMILY = "TEST_CF";
  private static final String KEYSPACE = "TEST_KEYSPACE";
  private static final String KEY = "TEST_ROW";

  private static Logger logger = LoggerFactory.getLogger(HttpTest.class);
 
  @Test
  public void testHttp() throws Exception {
    HttpClient client = new HttpClient();

    // DROP KEYSPACE
    DeleteMethod delete = new DeleteMethod(BASE_URL + KEYSPACE + "/");
    this.send(client, delete, -1);

    // CREATE KEYSPACE
    PutMethod put = new PutMethod(BASE_URL + KEYSPACE + "/");
    this.send(client, put, 204);

    // CREATE COLUMN FAMILY
    put = new PutMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/");
    this.send(client, put, 204);

    // INSERT ROW
    put = new PutMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/" + KEY);
    RequestEntity requestEntity = new StringRequestEntity("{\"ADDR1\":\"1234 Fun St.\",\"CITY\":\"Souderton.\"}",
        "appication/json", "UTF8");
    put.setRequestEntity(requestEntity);
    this.send(client, put, 204);

    // FETCH ROW (VERIFY ROW INSERT)
    GetMethod get = new GetMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/" + KEY);
    this.send(client, get, 200);
    String body = get.getResponseBodyAsString();
    assertEquals("{\"ADDR1\":\"1234 Fun St.\",\"CITY\":\"Souderton.\"}", body);
    logger.debug(body);

    // PATCH ROW
    PatchMethod patch = new PatchMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/" + KEY);
    requestEntity = new StringRequestEntity("{\"ADDR1\":\"1235 Fun St.\",\"COUNTY\":\"Montgomery\"}",
        "appication/json", "UTF8");
    patch.setRequestEntity(requestEntity);
    this.send(client, patch, 204);
   
    // FETCH ROW (VERIFY PATCH)
    get = new GetMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/" + KEY);
    this.send(client, get, 200);
    body = get.getResponseBodyAsString();
    assertEquals("{\"ADDR1\":\"1235 Fun St.\",\"COUNTY\":\"Montgomery\",\"CITY\":\"Souderton.\"}", body);
    logger.debug(body);
   
    // INSERT COLUMN
    put = new PutMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/" + KEY + "/STATE/");
    requestEntity = new StringRequestEntity("CA", "appication/json", "UTF8");
    put.setRequestEntity(requestEntity);
    this.send(client, put, 204);

    // FETCH ROW (VERIFY COLUMN INSERT)
    get = new GetMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/" + KEY);
    this.send(client, get, 200);
    body = get.getResponseBodyAsString();
    assertEquals("{\"ADDR1\":\"1235 Fun St.\",\"STATE\":\"CA\",\"COUNTY\":\"Montgomery\",\"CITY\":\"Souderton.\"}", body);
    logger.debug(body);

    // FETCH COLUMN
    get = new GetMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/" + KEY + "/CITY");
    this.send(client, get, 200);
    body = get.getResponseBodyAsString();
    assertEquals("Souderton.", body);
    logger.debug(body);

    // DELETE COLUMN
    delete = new DeleteMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/" + KEY + "/CITY");
    this.send(client, delete, 204);

    // VERIFY COLUMN DELETE
    get = new GetMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/" + KEY);
    this.send(client, get, 200);
    body = get.getResponseBodyAsString();
    assertEquals("{\"ADDR1\":\"1235 Fun St.\",\"STATE\":\"CA\",\"COUNTY\":\"Montgomery\"}", body);
    logger.debug(body);

    // DELETE ROW
    delete = new DeleteMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/" + KEY);
    this.send(client, delete, 200);

    // VERIFY ROW DELETE
    get = new GetMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/" + KEY);
    this.send(client, get, 204);
    body = get.getResponseBodyAsString();
    assertEquals(null, body);
    logger.debug(body);

    // CLEANUP : DROP COLUMN FAMILY
    delete = new DeleteMethod(BASE_URL + KEYSPACE + "/" + COLUMN_FAMILY + "/");
    this.send(client, delete, -1);

    // CLEANUP : DROP KEYSPACE
    delete = new DeleteMethod(BASE_URL + KEYSPACE + "/");
    this.send(client, delete, -1);
  }

  private void send(HttpClient client, HttpMethod method, int expect) throws Exception {
    try {
      int result = client.executeMethod(method);
      String body = method.getResponseBodyAsString();
      logger.debug(body);
      if (expect > 0)
        assertEquals(expect, result);
    } finally {
      method.releaseConnection();
    }
  }
}
TOP

Related Classes of com.hmsonline.virgil.HttpTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.