alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Apache CXF example source code file (ForkedCommandTest.java)

This example Apache CXF source code file (ForkedCommandTest.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Apache CXF tags/keywords

avar=something, bvar, bvar, bytearrayoutputstream, bytearrayoutputstream, env_command, forkedcommand, forkedcommand, forkedcommandexception, io, net, network, printstream, string, string, test, util, windows

The Apache CXF ForkedCommandTest.java source code

/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you 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.apache.cxf.common.commands;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.PrintStream;
import java.net.URL;
import java.util.StringTokenizer;


import org.apache.cxf.common.i18n.Message;
import org.junit.Assert;
import org.junit.Test;

public class ForkedCommandTest extends Assert {

    private static final String[] ENV_COMMAND;

    static {
        if (System.getProperty("os.name").startsWith("Windows")) {
            ENV_COMMAND = new String[] {"cmd", "/c", "set"};
        } else {
            ENV_COMMAND = new String[] {"env"};
        }
    }

    @Test
    public void testBasics() {
        ForkedCommand fc1 = new ForkedCommand();
        String cmdline1 = fc1.toString();
        assertEquals("", cmdline1);
        try {
            fc1.execute();
        } catch (ForkedCommandException ex) {
            assertEquals("NO_ARGUMENTS_EXC", ex.getCode());
        }
        String[] args = new String[] {"a", "b", "c d e"};
        ForkedCommand fc2 = new ForkedCommand(args);
        String cmdline2 = fc2.toString();
        assertTrue(cmdline2.startsWith("a"));
        assertTrue(cmdline2.endsWith("\""));
        fc1.setArgs(args);
        cmdline1 = fc1.toString();
        assertEquals(cmdline1, cmdline2);
        
        new ForkedCommandException(new NullPointerException());
        Message msg = org.easymock.classextension.EasyMock.createMock(Message.class);
        new ForkedCommandException(msg, new NullPointerException());
    }

    @Test
    public void testExecuteInDefaultEnvironment() {
        ByteArrayOutputStream bosOut = new ByteArrayOutputStream();
        ByteArrayOutputStream bosErr = new ByteArrayOutputStream();
        
        executeEnvCommand(null, bosOut, bosErr);
        
        String output = bosOut.toString();
        assertTrue(output.indexOf("AVAR") < 0 || output.indexOf("BVAR") < 0);      
    }
    
    @Test
    public void testExecuteInNonDefaultEnvironment() {
        ByteArrayOutputStream bosOut = new ByteArrayOutputStream();
        ByteArrayOutputStream bosErr = new ByteArrayOutputStream();
        String[] env = new String[3];
        env[0] = "BVAR=strange";
        if (System.getProperty("os.name").startsWith("Windows")) {
            env[1] = "AVAR=something %BVAR%";
            env[2] = "AVAR=something very %BVAR%";
        } else {
            env[1] = "AVAR=something $BVAR";
            env[2] = "AVAR=something very $BVAR";
        }
        
        
        executeEnvCommand(env, bosOut, bosErr);
        
        // test variables are overwritten but not replaced
        
        boolean found = false;
        String output = bosOut.toString();
        StringTokenizer st = new StringTokenizer(output, System.getProperty("line.separator"));
        while (st.hasMoreTokens()) {
            String line = st.nextToken();
            if (line.length() > 0) {
                if (System.getProperty("os.name").startsWith("Windows")) {
                    if ("AVAR=something very %BVAR%".equals(line)) {
                        found = true;
                        break;
                    }
                } else {
                    if ("AVAR=something very $BVAR".equals(line)
                        || "AVAR=something $BVAR".equals(line)) {
                        found = true;
                        break;
                    }
                }
            }
        }
        assertTrue(found);
        
    }
    
    @Test
    public void testTimeout() throws Exception {
        URL url = TestCommand.class.getResource("TestCommand.class");
        File file = new File(url.toURI());
        file = file.getParentFile();
        file = new File(file, "../../../../..");
        String[] cmd = new String[] {
            JavaHelper.getJavaCommand(),
            "-classpath",
            file.getCanonicalPath(),
            "org.apache.cxf.common.commands.TestCommand",
            "-duration",
            "60000",
        };
        ForkedCommand fc = new ForkedCommand(cmd);
        try {
            fc.execute(1);
            fail("Expected ForkedCommandException not thrown.");
        } catch (ForkedCommandException ex) {
            assertEquals("TIMEOUT_EXC", ex.getCode());
        }
    }

    private void executeEnvCommand(String[] env, ByteArrayOutputStream bosOut, ByteArrayOutputStream bosErr) {

        ForkedCommand fc = new ForkedCommand(ENV_COMMAND);
        if (null != env) {
            fc.setEnvironment(env);
        }
        fc.joinErrOut(true);

        PrintStream pso = new PrintStream(bosOut);
        PrintStream pse = new PrintStream(bosErr);
        fc.setOutputStream(pso);
        fc.setErrorStream(pse);

        int result = fc.execute();
        assertEquals(0, result);
        
    }
    
    
    
    

}

Other Apache CXF examples (source code examples)

Here is a short list of links related to this Apache CXF ForkedCommandTest.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.