TestShell.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.util;
  19. import junit.framework.TestCase;
  20. import java.io.BufferedReader;
  21. import java.io.IOException;
  22. public class TestShell extends TestCase {
  23.   private static class Command extends Shell {
  24.     private int runCount = 0;
  25.     private Command(long interval) {
  26.       super(interval);
  27.     }
  28.     protected String[] getExecString() {
  29.       return new String[] {"echo", "hello"};
  30.     }
  31.     protected void parseExecResult(BufferedReader lines) throws IOException {
  32.       ++runCount;
  33.     }
  34.     public int getRunCount() {
  35.       return runCount;
  36.     }
  37.   }
  38.   public void testInterval() throws IOException {
  39.     testInterval(Long.MIN_VALUE / 60000);  // test a negative interval
  40.     testInterval(0L);  // test a zero interval
  41.     testInterval(10L); // interval equal to 10mins
  42.     testInterval(System.currentTimeMillis() / 60000 + 60); // test a very big interval
  43.   }
  44.   /**
  45.    * Assert that a string has a substring in it
  46.    * @param string string to search
  47.    * @param search what to search for it
  48.    */
  49.   private void assertInString(String string, String search) {
  50.     assertNotNull("Empty String", string);
  51.     if (!string.contains(search)) {
  52.       fail("Did not find "" + search + "" in " + string);
  53.     }
  54.   }
  55.   public void testShellCommandExecutorToString() throws Throwable {
  56.     Shell.ShellCommandExecutor sce=new Shell.ShellCommandExecutor(
  57.             new String[] { "ls","..","arg 2"});
  58.     String command = sce.toString();
  59.     assertInString(command,"ls");
  60.     assertInString(command, " .. ");
  61.     assertInString(command, ""arg 2"");
  62.   }
  63.   private void testInterval(long interval) throws IOException {
  64.     Command command = new Command(interval);
  65.     command.run();
  66.     assertEquals(1, command.getRunCount());
  67.     command.run();
  68.     if (interval > 0) {
  69.       assertEquals(1, command.getRunCount());
  70.     } else {
  71.       assertEquals(2, command.getRunCount());
  72.     }
  73.   }
  74. }