Package com.streamreduce.util

Source Code of com.streamreduce.util.WebHDFSClientIT

/*
* Copyright 2012 Nodeable Inc
*
*    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 com.streamreduce.util;

import com.streamreduce.core.model.ConnectionCredentials;
import com.streamreduce.core.model.OutboundConfiguration;
import com.streamreduce.core.model.OutboundDataType;
import com.streamreduce.core.service.exception.InvalidCredentialsException;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

import java.io.IOException;
import java.util.ResourceBundle;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

/**
* Integration tests for the WebHDFSClient.
* <p/>
* <p>Author: Nick Heudecker</p>
* <p>Created: 7/3/12 8:16 AM</p>
*/
public class WebHDFSClientIT {

    private static ResourceBundle webhdfsProperties = ResourceBundle.getBundle("webhdfs");
    private static String host = webhdfsProperties.getString("webhdfs.host");
    private static String port = webhdfsProperties.getString("webhdfs.port");
    private static OutboundConfiguration.Builder outboundConfigurationBuilder;
    private static String testFileUrl = String.format("http://%s:%s/webhdfs/v1/testWebHDFSClientIT%s", host, port, System.currentTimeMillis());

    @BeforeClass
    public static void setUp() throws Exception {
        outboundConfigurationBuilder = new OutboundConfiguration.Builder()
                .protocol("webhdfs")
                .destination(testFileUrl)
                .credentials(new ConnectionCredentials("hadoop", null))
                .dataTypes(OutboundDataType.EVENT); //doesn't matter in this context
        WebHDFSClient webHDFSClient = new WebHDFSClient(outboundConfigurationBuilder.build());
        webHDFSClient.createFile("some content".getBytes("UTF-8"));
    }

    @AfterClass
    public static void tearDown() throws Exception {
        WebHDFSClient webHDFSClient = new WebHDFSClient(
                outboundConfigurationBuilder
                        .destination(testFileUrl)
                        .credentials(new ConnectionCredentials("hadoop", null))
                        .build());
        Assert.assertTrue(webHDFSClient.delete(true));

        webHDFSClient = new WebHDFSClient(
                outboundConfigurationBuilder
                        .destination(String.format("http://%s:%s/webhdfs/v1/mkdirstest", host, port))
                        .credentials(new ConnectionCredentials("hadoop", null))
                        .dataTypes(OutboundDataType.EVENT) //doesn't matter in this context
                        .build());
        Assert.assertTrue(webHDFSClient.delete(true));
    }

    @Test
    public void testValidateConnection_fileNotFound() throws Exception {
        WebHDFSClient webHDFSClient = new WebHDFSClient(
                outboundConfigurationBuilder
                        .destination(String.format("http://%s:%s/webhdfs/v1/foo", host, port))
                        .credentials(new ConnectionCredentials("hadoop", null))
                        .build());
        try {
            webHDFSClient.validateConnection();
            fail("Should have encountered IOException and didn't.");
        }
        catch (IOException ioe) {
            Assert.assertTrue(ioe.getMessage().contains("File does not exist: /foo"));
        }
    }

    @Test
    public void testValidateConnection_invalidCredentials() throws Exception {
        WebHDFSClient webHDFSClient = new WebHDFSClient(
                outboundConfigurationBuilder
                        .destination(String.format("http://%s:%s/webhdfs/v1/", host, port))
                        .credentials(new ConnectionCredentials("root", null))
                        .build());
        try {
            webHDFSClient.validateConnection();
            fail("Should have encountered InvalidCredentialsException and didn't.");
        }
        catch (InvalidCredentialsException ice) {
            assertEquals(ice.getMessage(), "User root does not own the target destination.");
        }
    }

    @Test
    public void testReadFile() throws Exception {
        WebHDFSClient webHDFSClient = new WebHDFSClient(
                outboundConfigurationBuilder
                        .destination(testFileUrl)
                        .credentials(new ConnectionCredentials("hadoop", null))
                        .build());
        byte[] data = webHDFSClient.readFile();
        assertEquals(new String(data), "some content");
    }

    @Test
    public void testMkdirs() throws Exception {
        WebHDFSClient webHDFSClient = new WebHDFSClient(
                outboundConfigurationBuilder
                        .destination(String.format("http://%s:%s/webhdfs/v1/", host, port))
                        .credentials(new ConnectionCredentials("hadoop", null))
                        .build());
        Assert.assertFalse(webHDFSClient.exists("mkdirstest"));
        webHDFSClient.mkdirs("mkdirstest");
        Assert.assertTrue(webHDFSClient.exists("mkdirstest"));
    }

}
TOP

Related Classes of com.streamreduce.util.WebHDFSClientIT

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.