/* * Copyright 2008-2011 the original author or authors. * * 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.kaleidofoundry.core.store; import static org.kaleidofoundry.core.store.FileStoreConsoleController.BEGINLINE_ARGS; import static org.kaleidofoundry.core.store.FileStoreConsoleController.MAXLINE_COUNT_ARGS; import java.net.URI; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriBuilder; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.kaleidofoundry.core.util.URLEncoderHelper; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.config.ClientConfig; import com.sun.jersey.api.client.config.DefaultClientConfig; /** * @author jraduget */ public class FileStoreConsoleControllerRestTest extends Assert { private static final String RESOURCE_TO_TEST = "classpath:/io/java_install.txt"; private Client client; @Before public void setup() { // client configuration ClientConfig config = new DefaultClientConfig(); client = Client.create(config); getBaseResource().path("register").queryParam("resource", URLEncoderHelper.encode(RESOURCE_TO_TEST)).get(String.class); } @Test public void head() { try { getBaseResource().path("head").queryParam("resource", URLEncoderHelper.encode("file:/tmp/none")).accept(MediaType.TEXT_PLAIN).get(String.class); } catch (UniformInterfaceException cnfe) { assertEquals(404, cnfe.getResponse().getStatus()); } String result; StringBuilder bufferResult; result = getBaseResource().path("head").queryParam("resource", URLEncoderHelper.encode(RESOURCE_TO_TEST)).queryParam(MAXLINE_COUNT_ARGS, "1") .accept(MediaType.TEXT_PLAIN).get(String.class); bufferResult = new StringBuilder(); bufferResult.append(" extracting: bin/").append("\n"); // 001 assertNotNull(bufferResult); assertEquals(bufferResult.toString(), result); result = getBaseResource().path("head").queryParam("resource", URLEncoderHelper.encode(RESOURCE_TO_TEST)).queryParam(MAXLINE_COUNT_ARGS, "2") .accept(MediaType.TEXT_PLAIN).get(String.class); bufferResult = new StringBuilder(); bufferResult.append(" extracting: bin/").append("\n"); // 001 bufferResult.append(" extracting: bin/awt.dll").append("\n"); // 002 assertNotNull(bufferResult); assertEquals(bufferResult.toString(), result); } @Test public void tail() { try { getBaseResource().path("tail").queryParam("resource", URLEncoderHelper.encode("file:/tmp/none")).accept(MediaType.TEXT_PLAIN).get(String.class); } catch (UniformInterfaceException cnfe) { assertEquals(404, cnfe.getResponse().getStatus()); } String result; StringBuilder bufferResult; result = getBaseResource().path("tail").queryParam("resource", URLEncoderHelper.encode(RESOURCE_TO_TEST)).queryParam(MAXLINE_COUNT_ARGS, "1") .accept(MediaType.TEXT_PLAIN).get(String.class); bufferResult = new StringBuilder(); bufferResult.append("A total of 3294 files (of which 3267 are classes) were written to output.").append("\n"); // 551 assertNotNull(bufferResult); assertEquals(bufferResult.toString(), result); result = getBaseResource().path("tail").queryParam("resource", URLEncoderHelper.encode(RESOURCE_TO_TEST)).queryParam(MAXLINE_COUNT_ARGS, "3") .accept(MediaType.TEXT_PLAIN).get(String.class); bufferResult = new StringBuilder(); bufferResult.append("A total of 2579113 bytes were read in 0 segment(s).").append("\n"); // 549 bufferResult.append("A total of 7571805 file content bytes were written.").append("\n"); // 550 bufferResult.append("A total of 3294 files (of which 3267 are classes) were written to output.").append("\n"); // 551 assertNotNull(bufferResult); assertEquals(bufferResult.toString(), result); } @Test public void extract() { try { getBaseResource().path("extract").queryParam("resource", URLEncoderHelper.encode("file:/tmp/none")).accept(MediaType.TEXT_PLAIN).get(String.class); } catch (UniformInterfaceException cnfe) { assertEquals(404, cnfe.getResponse().getStatus()); } String result; StringBuilder bufferResult; result = getBaseResource().path("extract").queryParam("resource", URLEncoderHelper.encode(RESOURCE_TO_TEST)).queryParam(BEGINLINE_ARGS, "1") .queryParam(MAXLINE_COUNT_ARGS, "1").accept(MediaType.TEXT_PLAIN).get(String.class); bufferResult = new StringBuilder(); bufferResult.append(" extracting: bin/").append("\n"); // 491 assertNotNull(bufferResult); assertEquals(bufferResult.toString(), result); result = getBaseResource().path("extract").queryParam("resource", URLEncoderHelper.encode(RESOURCE_TO_TEST)).queryParam(BEGINLINE_ARGS, "1") .queryParam(MAXLINE_COUNT_ARGS, "2").accept(MediaType.TEXT_PLAIN).get(String.class); bufferResult = new StringBuilder(); bufferResult.append(" extracting: bin/").append("\n"); // 491 bufferResult.append(" extracting: bin/awt.dll").append("\n"); assertNotNull(bufferResult); assertEquals(bufferResult.toString(), result); result = getBaseResource().path("extract").queryParam("resource", URLEncoderHelper.encode(RESOURCE_TO_TEST)).queryParam(BEGINLINE_ARGS, "491") .queryParam(MAXLINE_COUNT_ARGS, "4").accept(MediaType.TEXT_PLAIN).get(String.class); bufferResult = new StringBuilder(); bufferResult.append(" extracting: lib/zi/Pacific/Fakaofo").append("\n"); // 491 bufferResult.append(" extracting: lib/zi/Pacific/Fiji").append("\n"); bufferResult.append(" extracting: lib/zi/Pacific/Funafuti").append("\n"); bufferResult.append(" extracting: lib/zi/Pacific/Galapagos").append("\n"); assertNotNull(bufferResult); assertEquals(bufferResult.toString(), result); result = getBaseResource().path("extract").queryParam("resource", URLEncoderHelper.encode(RESOURCE_TO_TEST)).queryParam(BEGINLINE_ARGS, "549") .queryParam(MAXLINE_COUNT_ARGS, "1").accept(MediaType.TEXT_PLAIN).get(String.class); bufferResult = new StringBuilder(); bufferResult.append("A total of 3294 files (of which 3267 are classes) were written to output.").append("\n"); // 549 assertNotNull(bufferResult); assertEquals(bufferResult.toString(), result); } private URI getBaseURI() { return UriBuilder.fromUri("http://localhost:8380/kaleido-it").build(); } private WebResource getBaseResource() { WebResource resource = client.resource(getBaseURI()); return resource.path("rest").path("console/filestores"); } }