mirror of https://github.com/apache/cloudstack.git
136 lines
4.4 KiB
Java
136 lines
4.4 KiB
Java
//
|
|
// 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 com.cloud.utils;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.IOException;
|
|
|
|
import org.apache.commons.lang.SystemUtils;
|
|
import org.apache.log4j.Logger;
|
|
import org.junit.Assert;
|
|
import org.junit.Assume;
|
|
import org.junit.Ignore;
|
|
import org.junit.Test;
|
|
import org.mockito.Matchers;
|
|
import org.mockito.Mockito;
|
|
|
|
import com.cloud.utils.script.OutputInterpreter;
|
|
import com.cloud.utils.script.Script;
|
|
|
|
public class ScriptTest {
|
|
@Test
|
|
public void testEcho() {
|
|
Assume.assumeTrue(SystemUtils.IS_OS_LINUX);
|
|
Script script = new Script("/bin/echo");
|
|
script.add("bar");
|
|
OutputInterpreter.AllLinesParser resultParser = new OutputInterpreter.AllLinesParser();
|
|
String result = script.execute(resultParser);
|
|
// With allLinesParser, result is not comming from the return value
|
|
Assert.assertNull(result);
|
|
Assert.assertEquals("bar\n", resultParser.getLines());
|
|
}
|
|
|
|
@Test
|
|
public void testLogger() {
|
|
Assume.assumeTrue(SystemUtils.IS_OS_LINUX);
|
|
Logger mock = Mockito.mock(Logger.class);
|
|
Mockito.doNothing().when(mock).debug(Matchers.any());
|
|
Script script = new Script("/bin/echo", mock);
|
|
script.execute();
|
|
}
|
|
|
|
@Test
|
|
public void testToString() {
|
|
Assume.assumeTrue(SystemUtils.IS_OS_LINUX);
|
|
Script script = new Script("/bin/echo");
|
|
script.add("foo");
|
|
Assert.assertEquals("/bin/echo foo ", script.toString());
|
|
}
|
|
|
|
@Test
|
|
public void testSet() {
|
|
Assume.assumeTrue(SystemUtils.IS_OS_LINUX);
|
|
Script script = new Script("/bin/echo");
|
|
script.add("foo");
|
|
script.add("bar", "baz");
|
|
script.set("blah", "blah");
|
|
Assert.assertEquals("/bin/echo foo bar baz blah blah ",
|
|
script.toString());
|
|
}
|
|
|
|
@Test
|
|
@Ignore
|
|
public void testExecute() {
|
|
Assume.assumeTrue(SystemUtils.IS_OS_LINUX);
|
|
Logger mock = Mockito.mock(Logger.class);
|
|
Mockito.doNothing().when(mock).debug(Matchers.any());
|
|
for (int i = 0; i < 100000; i++) {
|
|
Script script = new Script("/bin/false", mock);
|
|
script.execute();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void testRunSimpleBashScript() {
|
|
Assume.assumeTrue(SystemUtils.IS_OS_LINUX);
|
|
Assert.assertEquals("hello world!",
|
|
Script.runSimpleBashScript("echo 'hello world!'"));
|
|
}
|
|
|
|
@Test
|
|
public void executeWithOutputInterpreter() {
|
|
Assume.assumeTrue(SystemUtils.IS_OS_LINUX);
|
|
Script script = new Script("/bin/bash");
|
|
script.add("-c");
|
|
script.add("echo 'hello world!'");
|
|
String value = script.execute(new OutputInterpreter() {
|
|
|
|
@Override
|
|
public String interpret(BufferedReader reader) throws IOException {
|
|
throw new IllegalArgumentException();
|
|
}
|
|
});
|
|
// it is a stack trace in this case as string
|
|
Assert.assertNotNull(value);
|
|
}
|
|
|
|
@Test
|
|
public void runSimpleBashScriptNotExisting() {
|
|
Assume.assumeTrue(SystemUtils.IS_OS_LINUX);
|
|
String output = Script.runSimpleBashScript("/not/existing/scripts/"
|
|
+ System.currentTimeMillis());
|
|
Assert.assertNull(output);
|
|
}
|
|
|
|
@Test
|
|
public void testRunSimpleBashScriptWithTimeout() {
|
|
Assume.assumeTrue(SystemUtils.IS_OS_LINUX);
|
|
Assert.assertEquals("hello world!",
|
|
Script.runSimpleBashScript("echo 'hello world!'", 1000));
|
|
}
|
|
|
|
@Test
|
|
public void testFindScript() {
|
|
Assume.assumeTrue(SystemUtils.IS_OS_LINUX);
|
|
String script = Script.findScript("/bin", "pwd");
|
|
Assert.assertNotNull("/bin/pwd shoud be there on linux", script);
|
|
}
|
|
}
|