@@ -0,0 +1,1697 @@
+/*%0A * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0%0A * (the %22License%22). You may not use this work except in compliance with the License, which is%0A * available at www.apache.org/licenses/LICENSE-2.0%0A *%0A * This software is distributed on an %22AS IS%22 basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,%0A * either express or implied, as more fully set forth in the License.%0A *%0A * See the NOTICE file distributed with this work for information regarding copyright ownership.%0A */%0A%0Apackage alluxio;%0A%0Aimport org.junit.rules.TestRule;%0Aimport org.junit.runner.Description;%0Aimport org.junit.runners.model.Statement;%0A%0A/**%0A * A rule for setting a system property to a value and then restoring the property to its old value.%0A */%0Apublic final class SystemPropertyRule implements TestRule %7B%0A  private final String mPropertyName;%0A  private final String mValue;%0A%0A  /**%0A   * @param propertyName the name of the property to set%0A   * @param value the value to set it to%0A   */%0A  public SystemPropertyRule(String propertyName, String value) %7B%0A    mPropertyName = propertyName;%0A    mValue = value;%0A  %7D%0A%0A  @Override%0A  public Statement apply(final Statement statement, Description description) %7B%0A    return new Statement() %7B%0A      @Override%0A      public void evaluate() throws Throwable %7B%0A        String previousValue = System.getProperty(mPropertyName);%0A        System.setProperty(mPropertyName, mValue);%0A        try %7B%0A          statement.evaluate();%0A        %7D finally %7B%0A          if (previousValue == null) %7B%0A            System.clearProperty(mPropertyName);%0A          %7D else %7B%0A            System.setProperty(mPropertyName, previousValue);%0A          %7D%0A        %7D%0A      %7D%0A    %7D;%0A  %7D%0A%7D%0A

Add rule for temporarily setting a system property