Repository: aurora
Updated Branches:
  refs/heads/master c8e65d33e -> f28564782


Remove unused components from the scheduler application stack.

Reviewed at https://reviews.apache.org/r/37987/


Project: http://git-wip-us.apache.org/repos/asf/aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/f2856478
Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/f2856478
Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/f2856478

Branch: refs/heads/master
Commit: f28564782f0cc9868dfe1f2b5375e4991f8643a9
Parents: c8e65d3
Author: Bill Farner <[email protected]>
Authored: Mon Aug 31 22:09:17 2015 -0700
Committer: Bill Farner <[email protected]>
Committed: Mon Aug 31 22:09:17 2015 -0700

----------------------------------------------------------------------
 .../thrift/org/apache/aurora/gen/storage.thrift |  10 -
 .../common/application/AbstractApplication.java |  29 ---
 .../aurora/common/application/AppLauncher.java  | 119 ++-------
 .../application/modules/AppLauncherModule.java  |   6 +-
 .../application/modules/LifecycleModule.java    |  47 ----
 .../modules/LocalServiceRegistry.java           | 247 -------------------
 .../common/application/modules/StatsModule.java |  35 ---
 .../apache/aurora/common/util/BuildInfo.java    | 108 --------
 .../common/application/AppLauncherTest.java     |  74 ------
 .../modules/LifecycleModuleTest.java            | 109 --------
 .../modules/LocalServiceRegistryTest.java       | 147 -----------
 .../modules/StartStatPollerTest.java            |  63 -----
 .../aurora/scheduler/app/SchedulerMain.java     |   6 +-
 .../storage/log/SnapshotStoreImpl.java          |   9 -
 14 files changed, 28 insertions(+), 981 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/api/src/main/thrift/org/apache/aurora/gen/storage.thrift
----------------------------------------------------------------------
diff --git a/api/src/main/thrift/org/apache/aurora/gen/storage.thrift 
b/api/src/main/thrift/org/apache/aurora/gen/storage.thrift
index b7c4665..670ba08 100644
--- a/api/src/main/thrift/org/apache/aurora/gen/storage.thrift
+++ b/api/src/main/thrift/org/apache/aurora/gen/storage.thrift
@@ -127,16 +127,6 @@ struct StoredCronJob {
 
 struct SchedulerMetadata {
   1: string frameworkId
-  // The SHA of the repo.
-  2: string revision
-  // The tag of the repo.
-  3: string tag
-  // The timestamp of the build.
-  4: string timestamp
-  // The user who built the scheduler
-  5: string user
-  // The machine that built the scheduler
-  6: string machine
   7: api.APIVersion version
 }
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/commons/src/main/java/org/apache/aurora/common/application/AbstractApplication.java
----------------------------------------------------------------------
diff --git 
a/commons/src/main/java/org/apache/aurora/common/application/AbstractApplication.java
 
b/commons/src/main/java/org/apache/aurora/common/application/AbstractApplication.java
deleted file mode 100644
index afb3691..0000000
--- 
a/commons/src/main/java/org/apache/aurora/common/application/AbstractApplication.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 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 org.apache.aurora.common.application;
-
-import java.util.Collections;
-
-import com.google.inject.Module;
-
-/**
- * A base application class that provides empty implementations of all but the 
{@link #run()}
- * method.
- */
-public abstract class AbstractApplication implements Application {
-  @Override
-  public Iterable<? extends Module> getModules() {
-    return Collections.emptyList();
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/commons/src/main/java/org/apache/aurora/common/application/AppLauncher.java
----------------------------------------------------------------------
diff --git 
a/commons/src/main/java/org/apache/aurora/common/application/AppLauncher.java 
b/commons/src/main/java/org/apache/aurora/common/application/AppLauncher.java
index c842f42..78ed7d0 100644
--- 
a/commons/src/main/java/org/apache/aurora/common/application/AppLauncher.java
+++ 
b/commons/src/main/java/org/apache/aurora/common/application/AppLauncher.java
@@ -13,22 +13,17 @@
  */
 package org.apache.aurora.common.application;
 
-import java.lang.reflect.Field;
 import java.util.Arrays;
-import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
 import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableList;
 import com.google.inject.Guice;
-import com.google.inject.Inject;
 import com.google.inject.Injector;
+import com.google.inject.Key;
 import com.google.inject.Module;
-import com.google.inject.Stage;
 import com.google.inject.util.Modules;
 
 import org.apache.aurora.common.application.modules.AppLauncherModule;
@@ -38,7 +33,6 @@ import org.apache.aurora.common.args.ArgFilters;
 import org.apache.aurora.common.args.ArgScanner;
 import org.apache.aurora.common.args.ArgScanner.ArgScanException;
 import org.apache.aurora.common.args.CmdLine;
-import org.apache.aurora.common.args.constraints.NotNull;
 import org.apache.aurora.common.base.ExceptionalCommand;
 
 /**
@@ -59,41 +53,34 @@ public final class AppLauncher {
 
   private static final Logger LOG = 
Logger.getLogger(AppLauncher.class.getName());
 
-  private static final String APP_CLASS_NAME = "app_class";
-  @NotNull
-  @CmdLine(name = APP_CLASS_NAME,
-           help = "Fully-qualified name of the application class, which must 
implement Runnable.")
-  private static final Arg<Class<? extends Application>> APP_CLASS = 
Arg.create();
-
-  @CmdLine(name = "guice_stage",
-           help = "Guice development stage to create injector with.")
-  private static final Arg<Stage> GUICE_STAGE = Arg.create(Stage.DEVELOPMENT);
-
-  private static final Predicate<Field> SELECT_APP_CLASS =
-      ArgFilters.selectCmdLineArg(AppLauncher.class, APP_CLASS_NAME);
-
-  @Inject @StartupStage private ExceptionalCommand startupCommand;
-  @Inject private Lifecycle lifecycle;
-
   private AppLauncher() {
     // This should not be invoked directly.
   }
 
   private void run(Application application) {
+    Lifecycle lifecycle = null;
     try {
-      configureInjection(application);
+      Iterable<Module> modules = ImmutableList.<Module>builder()
+          .add(new LifecycleModule())
+          .add(new AppLauncherModule())
+          .addAll(application.getModules())
+          .build();
+
+      Injector injector = Guice.createInjector(Modules.combine(modules));
+
+      ExceptionalCommand startupCommand =
+          injector.getInstance(Key.get(ExceptionalCommand.class, 
StartupStage.class));
+      lifecycle = injector.getInstance(Lifecycle.class);
+
+      injector.injectMembers(application);
 
       LOG.info("Executing startup actions.");
-      // We're an app framework and this is the outer shell - it makes sense 
to handle all errors
-      // before exiting.
-      // SUPPRESS CHECKSTYLE:OFF IllegalCatch
       try {
         startupCommand.execute();
       } catch (Exception e) {
         LOG.log(Level.SEVERE, "Startup action failed, quitting.", e);
         throw Throwables.propagate(e);
       }
-      // SUPPRESS CHECKSTYLE:ON IllegalCatch
 
       try {
         application.run();
@@ -107,85 +94,21 @@ public final class AppLauncher {
     }
   }
 
-  private void configureInjection(Application application) {
-    Iterable<Module> modules = ImmutableList.<Module>builder()
-        .add(new LifecycleModule())
-        .add(new AppLauncherModule())
-        .addAll(application.getModules())
-        .build();
-
-    Injector injector = Guice.createInjector(GUICE_STAGE.get(), 
Modules.combine(modules));
-    injector.injectMembers(this);
-    injector.injectMembers(application);
-  }
-
-  public static void main(String... args) throws IllegalAccessException, 
InstantiationException {
-    // TODO(John Sirois): Support a META-INF/MANIFEST.MF App-Class attribute 
to allow java -jar
-    parseArgs(ArgFilters.SELECT_ALL, Arrays.asList(args));
-    new AppLauncher().run(APP_CLASS.get().newInstance());
-  }
-
-  /**
-   * A convenience for main wrappers.  Equivalent to:
-   * <pre>
-   *   AppLauncher.launch(appClass, ArgFilters.SELECT_ALL, 
Arrays.asList(args));
-   * </pre>
-   *
-   * @param appClass The application class to instantiate and launch.
-   * @param args The command line arguments to parse.
-   * @see ArgFilters
-   */
-  public static void launch(Class<? extends Application> appClass, String... 
args) {
-    launch(appClass, ArgFilters.SELECT_ALL, Arrays.asList(args));
-  }
-
-  /**
-   * A convenience for main wrappers.  Equivalent to:
-   * <pre>
-   *   AppLauncher.launch(appClass, argFilter, Arrays.asList(args));
-   * </pre>
-   *
-   * @param appClass The application class to instantiate and launch.
-   * @param argFilter A filter that selects the {@literal @CmdLine} {@link 
Arg}s to enable for
-   *     parsing.
-   * @param args The command line arguments to parse.
-   * @see ArgFilters
-   */
-  public static void launch(Class<? extends Application> appClass, 
Predicate<Field> argFilter,
-      String... args) {
-    launch(appClass, argFilter, Arrays.asList(args));
-  }
-
   /**
    * Used to launch an application with a restricted set of {@literal 
@CmdLine} {@link Arg}s
    * considered for parsing.  This is useful if the classpath includes 
annotated fields you do not
    * wish arguments to be parsed for.
    *
    * @param appClass The application class to instantiate and launch.
-   * @param argFilter A filter that selects the {@literal @CmdLine} {@link 
Arg}s to enable for
-   *     parsing.
    * @param args The command line arguments to parse.
    * @see ArgFilters
    */
-  public static void launch(Class<? extends Application> appClass, 
Predicate<Field> argFilter,
-      List<String> args) {
+  public static void launch(Class<? extends Application> appClass, String... 
args) {
     Preconditions.checkNotNull(appClass);
-    Preconditions.checkNotNull(argFilter);
     Preconditions.checkNotNull(args);
 
-    parseArgs(Predicates.<Field>and(Predicates.not(SELECT_APP_CLASS), 
argFilter), args);
     try {
-      new AppLauncher().run(appClass.newInstance());
-    } catch (InstantiationException e) {
-      throw new IllegalStateException(e);
-    } catch (IllegalAccessException e) {
-      throw new IllegalStateException(e);
-    }
-  }
-
-  private static void parseArgs(Predicate<Field> filter, List<String> args) {
-    try {
-      if (!new ArgScanner().parse(filter, args)) {
+      if (!new ArgScanner().parse(Arrays.asList(args))) {
         System.exit(0);
       }
     } catch (ArgScanException e) {
@@ -193,6 +116,14 @@ public final class AppLauncher {
     } catch (IllegalArgumentException e) {
       exit("Failed to apply arguments", e);
     }
+
+    try {
+      new AppLauncher().run(appClass.newInstance());
+    } catch (InstantiationException e) {
+      throw new IllegalStateException(e);
+    } catch (IllegalAccessException e) {
+      throw new IllegalStateException(e);
+    }
   }
 
   private static void exit(String message, Exception error) {

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/commons/src/main/java/org/apache/aurora/common/application/modules/AppLauncherModule.java
----------------------------------------------------------------------
diff --git 
a/commons/src/main/java/org/apache/aurora/common/application/modules/AppLauncherModule.java
 
b/commons/src/main/java/org/apache/aurora/common/application/modules/AppLauncherModule.java
index 65e9250..1c08f7e 100644
--- 
a/commons/src/main/java/org/apache/aurora/common/application/modules/AppLauncherModule.java
+++ 
b/commons/src/main/java/org/apache/aurora/common/application/modules/AppLauncherModule.java
@@ -19,12 +19,9 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
-
-import org.apache.aurora.common.stats.Stats;
-import org.apache.aurora.common.util.BuildInfo;
 
 import org.apache.aurora.common.application.AppLauncher;
+import org.apache.aurora.common.stats.Stats;
 
 /**
  * Binding module for the bare minimum requirements for the
@@ -39,7 +36,6 @@ public class AppLauncherModule extends AbstractModule {
 
   @Override
   protected void configure() {
-    bind(BuildInfo.class).in(Singleton.class);
     bind(UncaughtExceptionHandler.class).to(LoggingExceptionHandler.class);
   }
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/commons/src/main/java/org/apache/aurora/common/application/modules/LifecycleModule.java
----------------------------------------------------------------------
diff --git 
a/commons/src/main/java/org/apache/aurora/common/application/modules/LifecycleModule.java
 
b/commons/src/main/java/org/apache/aurora/common/application/modules/LifecycleModule.java
index 6414208..1b6bd08 100644
--- 
a/commons/src/main/java/org/apache/aurora/common/application/modules/LifecycleModule.java
+++ 
b/commons/src/main/java/org/apache/aurora/common/application/modules/LifecycleModule.java
@@ -16,7 +16,6 @@ package org.apache.aurora.common.application.modules;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.inject.AbstractModule;
 import com.google.inject.Binder;
 import com.google.inject.BindingAnnotation;
@@ -30,7 +29,6 @@ import org.apache.aurora.common.application.ShutdownRegistry;
 import org.apache.aurora.common.application.ShutdownStage;
 import org.apache.aurora.common.application.StartupRegistry;
 import org.apache.aurora.common.application.StartupStage;
-
 import org.apache.aurora.common.base.Command;
 import org.apache.aurora.common.base.ExceptionalCommand;
 
@@ -50,10 +48,6 @@ import static 
com.google.common.base.Preconditions.checkNotNull;
  *   <li>{@code ShutdownRegistry} - Registry for adding shutdown actions.
  *   <li>{@code @ShutdownStage Command} - Command to execute all shutdown 
commands.
  * </ul>
- *
- * If you would like to register a startup action that starts a local network 
service, please
- * consider using {@link LocalServiceRegistry}.
- *
  * @author William Farner
  */
 public class LifecycleModule extends AbstractModule {
@@ -78,13 +72,6 @@ public class LifecycleModule extends AbstractModule {
     bind(Key.get(Command.class, 
ShutdownStage.class)).to(ShutdownRegistry.ShutdownRegistryImpl.class);
     bind(ShutdownRegistry.ShutdownRegistryImpl.class).in(Singleton.class);
     bindStartupAction(binder(), ShutdownHookRegistration.class);
-
-    bind(LocalServiceRegistry.class).in(Singleton.class);
-
-    // Ensure that there is at least an empty set for the service runners.
-    runnerBinder(binder());
-
-    bindStartupAction(binder(), LocalServiceLauncher.class);
   }
 
   /**
@@ -101,25 +88,6 @@ public class LifecycleModule extends AbstractModule {
   }
 
   /**
-   * Responsible for starting and stopping a local service.
-   */
-  public interface ServiceRunner {
-
-    /**
-     * Launches the local service.
-     *
-     * @return Information about the launched service.
-     * @throws LaunchException If the service failed to launch.
-     */
-    LocalServiceRegistry.LocalService launch() throws LaunchException;
-  }
-
-  @VisibleForTesting
-  static Multibinder<ServiceRunner> runnerBinder(Binder binder) {
-    return Multibinder.newSetBinder(binder, ServiceRunner.class, 
Service.class);
-  }
-
-  /**
    * Adds a startup action to the startup registry binding.
    *
    * @param binder Binder to bind against.
@@ -150,19 +118,4 @@ public class LifecycleModule extends AbstractModule {
       }, "ShutdownRegistry-Hook"));
     }
   }
-
-  /**
-   * Startup command that ensures startup and shutdown of local services.
-   */
-  private static class LocalServiceLauncher implements Command {
-    private final LocalServiceRegistry serviceRegistry;
-
-    @Inject LocalServiceLauncher(LocalServiceRegistry serviceRegistry) {
-      this.serviceRegistry = checkNotNull(serviceRegistry);
-    }
-
-    @Override public void execute() {
-      serviceRegistry.ensureLaunched();
-    }
-  }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/commons/src/main/java/org/apache/aurora/common/application/modules/LocalServiceRegistry.java
----------------------------------------------------------------------
diff --git 
a/commons/src/main/java/org/apache/aurora/common/application/modules/LocalServiceRegistry.java
 
b/commons/src/main/java/org/apache/aurora/common/application/modules/LocalServiceRegistry.java
deleted file mode 100644
index 806951b..0000000
--- 
a/commons/src/main/java/org/apache/aurora/common/application/modules/LocalServiceRegistry.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/**
- * 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 org.apache.aurora.common.application.modules;
-
-import java.net.InetSocketAddress;
-import java.net.UnknownHostException;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Maps;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-import org.apache.aurora.common.application.ShutdownRegistry;
-import org.apache.commons.lang.builder.ToStringBuilder;
-
-import 
org.apache.aurora.common.application.modules.LifecycleModule.LaunchException;
-import org.apache.aurora.common.application.modules.LifecycleModule.Service;
-import 
org.apache.aurora.common.application.modules.LifecycleModule.ServiceRunner;
-import org.apache.aurora.common.base.Command;
-import org.apache.aurora.common.base.MorePreconditions;
-import org.apache.aurora.common.net.InetSocketAddressHelper;
-
-/**
- * Registry for services that should be exported from the application.
- *
- * Example of announcing and registering a port:
- * <pre>
- * class MyLauncher implements Provider<LocalService> {
- *   public LocalService get() {
- *     // Launch service.
- *   }
- * }
- *
- * class MyServiceModule extends AbstractModule {
- *   public void configure() {
- *     LifeCycleModule.bindServiceLauncher(binder(), MyLauncher.class);
- *   }
- * }
- * </pre>
- */
-public class LocalServiceRegistry {
-
-  private static final Predicate<LocalService> IS_PRIMARY = new 
Predicate<LocalService>() {
-    @Override public boolean apply(LocalService service) {
-      return service.primary;
-    }
-  };
-
-  private static final Function<LocalService, InetSocketAddress> 
SERVICE_TO_SOCKET =
-      new Function<LocalService, InetSocketAddress>() {
-        @Override public InetSocketAddress apply(LocalService service) {
-          try {
-            return InetSocketAddressHelper.getLocalAddress(service.port);
-          } catch (UnknownHostException e) {
-            throw new RuntimeException("Failed to resolve local address for " 
+ service, e);
-          }
-        }
-      };
-
-  private static final Function<LocalService, String> GET_NAME =
-      new Function<LocalService, String>() {
-        @Override public String apply(LocalService service) {
-          return Iterables.getOnlyElement(service.names);
-        }
-      };
-
-  private final ShutdownRegistry shutdownRegistry;
-  private final Provider<Set<ServiceRunner>> runnerProvider;
-
-  private Optional<InetSocketAddress> primarySocket = null;
-  private Map<String, InetSocketAddress> auxiliarySockets = null;
-
-  /**
-   * Creates a new local service registry.
-   *
-   * @param runnerProvider provider of registered local services.
-   * @param shutdownRegistry Shutdown registry to tear down launched services.
-   */
-  @Inject
-  public LocalServiceRegistry(@Service Provider<Set<ServiceRunner>> 
runnerProvider,
-      ShutdownRegistry shutdownRegistry) {
-    this.runnerProvider = Preconditions.checkNotNull(runnerProvider);
-    this.shutdownRegistry = Preconditions.checkNotNull(shutdownRegistry);
-  }
-
-  private static final Function<LocalService, Iterable<LocalService>> 
AUX_NAME_BREAKOUT =
-      new Function<LocalService, Iterable<LocalService>>() {
-        @Override public Iterable<LocalService> apply(final LocalService 
service) {
-          Preconditions.checkArgument(!service.primary);
-          Function<String, LocalService> oneNameService = new Function<String, 
LocalService>() {
-            @Override public LocalService apply(String name) {
-              return LocalService.auxiliaryService(name, service.port, 
service.shutdownCommand);
-            }
-          };
-          return Iterables.transform(service.names, oneNameService);
-        }
-      };
-
-  /**
-   * Launches the local services if not already launched, otherwise this is a 
no-op.
-   */
-  void ensureLaunched() {
-    if (primarySocket == null) {
-      ImmutableList.Builder<LocalService> builder = ImmutableList.builder();
-
-      for (ServiceRunner runner : runnerProvider.get()) {
-        try {
-          LocalService service = runner.launch();
-          builder.add(service);
-          shutdownRegistry.addAction(service.shutdownCommand);
-        } catch (LaunchException e) {
-          throw new IllegalStateException("Failed to launch " + runner, e);
-        }
-      }
-
-      List<LocalService> localServices = builder.build();
-      Iterable<LocalService> primaries = Iterables.filter(localServices, 
IS_PRIMARY);
-      switch (Iterables.size(primaries)) {
-        case 0:
-          primarySocket = Optional.absent();
-          break;
-
-        case 1:
-          primarySocket = 
Optional.of(SERVICE_TO_SOCKET.apply(Iterables.getOnlyElement(primaries)));
-          break;
-
-        default:
-          throw new IllegalArgumentException("More than one primary local 
service: " + primaries);
-      }
-
-      Iterable<LocalService> auxSinglyNamed = Iterables.concat(
-          FluentIterable.from(localServices)
-              .filter(Predicates.not(IS_PRIMARY))
-              .transform(AUX_NAME_BREAKOUT));
-
-      Map<String, LocalService> byName;
-      try {
-        byName = Maps.uniqueIndex(auxSinglyNamed, GET_NAME);
-      } catch (IllegalArgumentException e) {
-        throw new IllegalArgumentException("Auxiliary services with identical 
names.", e);
-      }
-
-      auxiliarySockets = ImmutableMap.copyOf(Maps.transformValues(byName, 
SERVICE_TO_SOCKET));
-    }
-  }
-
-  /**
-   * Gets the mapping from auxiliary port name to socket.
-   *
-   * @return Auxiliary port mapping.
-   */
-  public synchronized Map<String, InetSocketAddress> getAuxiliarySockets() {
-    ensureLaunched();
-    return auxiliarySockets;
-  }
-
-  /**
-   * Gets the optional primary socket address, and returns an unresolved local 
socket address
-   * representing that port.
-   *
-   * @return Local socket address for the primary port.
-   * @throws IllegalStateException If the primary port was not set.
-   */
-  public synchronized Optional<InetSocketAddress> getPrimarySocket() {
-    ensureLaunched();
-    return primarySocket;
-  }
-
-  /**
-   * An individual local service.
-   */
-  public static final class LocalService {
-    private final boolean primary;
-    private final Set<String> names;
-    private final int port;
-    private final Command shutdownCommand;
-
-    private LocalService(boolean primary, Set<String> names, int port,
-        Command shutdownCommand) {
-      this.primary = primary;
-      this.names = names;
-      this.port = port;
-      this.shutdownCommand = Preconditions.checkNotNull(shutdownCommand);
-    }
-
-    @Override
-    public String toString() {
-      return new ToStringBuilder(this)
-          .append("primary", primary)
-          .append("name", names)
-          .append("port", port)
-          .toString();
-    }
-
-    /**
-     * Creates a named auxiliary service.
-     *
-     * @param name Service name.
-     * @param port Service port.
-     * @param shutdownCommand A command that will shut down the service.
-     * @return A new auxiliary local service.
-     */
-    public static LocalService auxiliaryService(String name, int port, Command 
shutdownCommand) {
-      return auxiliaryService(ImmutableSet.of(name), port, shutdownCommand);
-    }
-
-    /**
-     * Creates an auxiliary service identified by multiple names.
-     *
-     * @param names Service names.
-     * @param port Service port.
-     * @param shutdownCommand A command that will shut down the service.
-     * @return A new auxiliary local service.
-     */
-    public static LocalService auxiliaryService(
-        Set<String> names,
-        int port,
-        Command shutdownCommand) {
-
-      MorePreconditions.checkNotBlank(names);
-      return new LocalService(false, names, port, shutdownCommand);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/commons/src/main/java/org/apache/aurora/common/application/modules/StatsModule.java
----------------------------------------------------------------------
diff --git 
a/commons/src/main/java/org/apache/aurora/common/application/modules/StatsModule.java
 
b/commons/src/main/java/org/apache/aurora/common/application/modules/StatsModule.java
index 78d9512..3959ce3 100644
--- 
a/commons/src/main/java/org/apache/aurora/common/application/modules/StatsModule.java
+++ 
b/commons/src/main/java/org/apache/aurora/common/application/modules/StatsModule.java
@@ -13,11 +13,9 @@
  */
 package org.apache.aurora.common.application.modules;
 
-import java.util.Properties;
 import java.util.logging.Logger;
 
 import com.google.common.base.Supplier;
-import com.google.common.primitives.Longs;
 import com.google.inject.AbstractModule;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
@@ -32,12 +30,10 @@ import org.apache.aurora.common.quantity.Amount;
 import org.apache.aurora.common.quantity.Time;
 import org.apache.aurora.common.stats.JvmStats;
 import org.apache.aurora.common.stats.Stat;
-import org.apache.aurora.common.stats.StatImpl;
 import org.apache.aurora.common.stats.StatRegistry;
 import org.apache.aurora.common.stats.Stats;
 import org.apache.aurora.common.stats.TimeSeriesRepository;
 import org.apache.aurora.common.stats.TimeSeriesRepositoryImpl;
-import org.apache.aurora.common.util.BuildInfo;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
@@ -69,14 +65,9 @@ public class StatsModule extends AbstractModule {
   private static final Arg<Amount<Long, Time>> RETENTION_PERIOD =
       Arg.create(Amount.of(1L, Time.HOURS));
 
-  public static Amount<Long, Time> getSamplingInterval() {
-    return SAMPLING_INTERVAL.get();
-  }
-
   @Override
   protected void configure() {
     requireBinding(ShutdownRegistry.class);
-    requireBinding(BuildInfo.class);
 
     // Bindings for TimeSeriesRepositoryImpl.
     bind(StatRegistry.class).toInstance(Stats.STAT_REGISTRY);
@@ -102,43 +93,17 @@ public class StatsModule extends AbstractModule {
   public static final class StartStatPoller implements Command {
     private static final Logger LOG = 
Logger.getLogger(StartStatPoller.class.getName());
     private final ShutdownRegistry shutdownRegistry;
-    private final BuildInfo buildInfo;
     private final TimeSeriesRepository timeSeriesRepository;
 
     @Inject StartStatPoller(
         ShutdownRegistry shutdownRegistry,
-        BuildInfo buildInfo,
         TimeSeriesRepository timeSeriesRepository) {
 
       this.shutdownRegistry = checkNotNull(shutdownRegistry);
-      this.buildInfo = checkNotNull(buildInfo);
       this.timeSeriesRepository = checkNotNull(timeSeriesRepository);
     }
 
     @Override public void execute() {
-      Properties properties = buildInfo.getProperties();
-      LOG.info("Build information: " + properties);
-      for (String name : properties.stringPropertyNames()) {
-        final String stringValue = properties.getProperty(name);
-        if (stringValue == null) {
-          continue;
-        }
-        final Long longValue = Longs.tryParse(stringValue);
-        if (longValue != null) {
-          Stats.exportStatic(new StatImpl<Long>(Stats.normalizeName(name)) {
-            @Override public Long read() {
-              return longValue;
-            }
-          });
-        } else {
-          Stats.exportString(new StatImpl<String>(Stats.normalizeName(name)) {
-            @Override public String read() {
-              return stringValue;
-            }
-          });
-        }
-      }
-
       JvmStats.export();
       timeSeriesRepository.start(shutdownRegistry);
     }

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/commons/src/main/java/org/apache/aurora/common/util/BuildInfo.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/util/BuildInfo.java 
b/commons/src/main/java/org/apache/aurora/common/util/BuildInfo.java
deleted file mode 100644
index c290d32..0000000
--- a/commons/src/main/java/org/apache/aurora/common/util/BuildInfo.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * 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 org.apache.aurora.common.util;
-
-import java.io.InputStream;
-import java.util.Properties;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import com.google.common.annotations.VisibleForTesting;
-
-import org.apache.aurora.common.base.MorePreconditions;
-
-/**
- * Handles loading of a build properties file, and provides keys to look up 
known values in the
- * properties.
- */
-public class BuildInfo {
-
-  private static final Logger LOG = 
Logger.getLogger(BuildInfo.class.getName());
-
-  private static final String DEFAULT_BUILD_PROPERTIES_PATH = 
"build.properties";
-
-  private final String resourcePath;
-
-  private Properties properties = null;
-
-  /**
-   * Creates a build info container that will use the default properties file 
path.
-   */
-  public BuildInfo() {
-    this(DEFAULT_BUILD_PROPERTIES_PATH);
-  }
-
-  /**
-   * Creates a build info container, reading from the given path.
-   *
-   * @param resourcePath The resource path to read build properties from.
-   */
-  public BuildInfo(String resourcePath) {
-    this.resourcePath = MorePreconditions.checkNotBlank(resourcePath);
-  }
-
-  @VisibleForTesting
-  public BuildInfo(Properties properties) {
-    this.resourcePath = null;
-    this.properties = properties;
-  }
-
-  private void fetchProperties() {
-    properties = new Properties();
-    LOG.info("Fetching build properties from " + resourcePath);
-    InputStream in = ClassLoader.getSystemResourceAsStream(resourcePath);
-    if (in == null) {
-      LOG.warning("Failed to fetch build properties from " + resourcePath);
-      return;
-    }
-
-    try {
-      properties.load(in);
-    } catch (Exception e) {
-      LOG.log(Level.WARNING, "Failed to load properties file " + resourcePath, 
e);
-    }
-  }
-
-  /**
-   * Fetches the properties stored in the resource location.
-   *
-   * @return The loaded properties, or a default properties object if there 
was a problem loading
-   *    the specified properties resource.
-   */
-  public Properties getProperties() {
-    if (properties == null) fetchProperties();
-    return properties;
-  }
-
-  /**
-   * Values of keys that are expected to exist in the loaded properties file.
-   */
-  public enum Key {
-    PATH("build.path"),
-    USER("build.user.name"),
-    MACHINE("build.machine"),
-    DATE("build.date"),
-    TIME("build.time"),
-    TIMESTAMP("build.timestamp"),
-    GIT_TAG("build.git.tag"),
-    GIT_REVISION("build.git.revision"),
-    GIT_REVISION_NUMBER("build.git.revision.number"),
-    GIT_BRANCHNAME("build.git.branchname");
-
-    public final String value;
-    private Key(String value) {
-      this.value = value;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/commons/src/test/java/org/apache/aurora/common/application/AppLauncherTest.java
----------------------------------------------------------------------
diff --git 
a/commons/src/test/java/org/apache/aurora/common/application/AppLauncherTest.java
 
b/commons/src/test/java/org/apache/aurora/common/application/AppLauncherTest.java
deleted file mode 100644
index d821240..0000000
--- 
a/commons/src/test/java/org/apache/aurora/common/application/AppLauncherTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * 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 org.apache.aurora.common.application;
-
-import java.lang.reflect.Field;
-
-import com.google.common.base.Predicates;
-
-import org.junit.Test;
-
-import org.apache.aurora.common.args.Arg;
-import org.apache.aurora.common.args.ArgFilters;
-import org.apache.aurora.common.args.CmdLine;
-import org.apache.aurora.common.args.constraints.NotNull;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- * @author John Sirois
- */
-public class AppLauncherTest {
-
-  public static class TestApp1 extends AbstractApplication {
-    @NotNull
-    @CmdLine(name = "user", help = "a username")
-    static final Arg<String> USER = Arg.create();
-
-    private static boolean hasRun;
-
-    @Override public void run() {
-      hasRun = true;
-    }
-  }
-
-  @Test
-  public void testLaunch1() {
-    AppLauncher.launch(TestApp1.class, ArgFilters.selectClass(TestApp1.class), 
"-user", "jake");
-    assertTrue(TestApp1.hasRun);
-    assertEquals("jake", TestApp1.USER.get());
-  }
-
-  public static class TestApp2 extends AbstractApplication {
-    @NotNull
-    @CmdLine(name = "user", help = "a username")
-    static final Arg<String> USER = Arg.create(null);
-
-    private static boolean hasRun;
-
-    @Override public void run() {
-      hasRun = true;
-    }
-  }
-
-  @Test
-  public void testLaunch2() {
-    // We filter out the NotNull Arg so we should be able to launch without 
specifying it.
-    AppLauncher.launch(TestApp2.class, Predicates.<Field>alwaysFalse());
-    assertTrue(TestApp2.hasRun);
-    assertNull(TestApp2.USER.get());
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/commons/src/test/java/org/apache/aurora/common/application/modules/LifecycleModuleTest.java
----------------------------------------------------------------------
diff --git 
a/commons/src/test/java/org/apache/aurora/common/application/modules/LifecycleModuleTest.java
 
b/commons/src/test/java/org/apache/aurora/common/application/modules/LifecycleModuleTest.java
deleted file mode 100644
index 940607e..0000000
--- 
a/commons/src/test/java/org/apache/aurora/common/application/modules/LifecycleModuleTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * 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 org.apache.aurora.common.application.modules;
-
-import java.lang.Thread.UncaughtExceptionHandler;
-import java.net.InetSocketAddress;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
-import com.google.inject.AbstractModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-
-import org.apache.aurora.common.application.ShutdownRegistry;
-import 
org.apache.aurora.common.application.modules.LifecycleModule.LaunchException;
-import 
org.apache.aurora.common.application.modules.LifecycleModule.ServiceRunner;
-import 
org.apache.aurora.common.application.modules.LocalServiceRegistry.LocalService;
-import org.apache.aurora.common.base.Command;
-import org.apache.aurora.common.testing.easymock.EasyMockTest;
-import org.junit.Test;
-
-import static 
org.apache.aurora.common.net.InetSocketAddressHelper.getLocalAddress;
-import static org.easymock.EasyMock.expect;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-/**
- * @author William Farner
- */
-public class LifecycleModuleTest extends EasyMockTest {
-
-  private static class SystemModule extends AbstractModule {
-    @Override protected void configure() {
-      install(new LifecycleModule());
-      bind(UncaughtExceptionHandler.class).toInstance(new 
UncaughtExceptionHandler() {
-        @Override public void uncaughtException(Thread thread, Throwable 
throwable) {
-          fail("Uncaught exception.");
-        }
-      });
-    }
-  }
-
-  @Test
-  public void testNoServices() {
-    control.replay();
-
-    Injector injector = Guice.createInjector(new SystemModule());
-
-    LocalServiceRegistry registry = 
injector.getInstance(LocalServiceRegistry.class);
-    assertEquals(Optional.<InetSocketAddress>absent(), 
registry.getPrimarySocket());
-    assertEquals(ImmutableMap.<String, InetSocketAddress>of(), 
registry.getAuxiliarySockets());
-  }
-
-  @Test
-  public void testOrdering() throws Exception {
-    final ServiceRunner runner = createMock(ServiceRunner.class);
-    Command shutdown = createMock(Command.class);
-
-    expect(runner.launch()).andReturn(LocalService.auxiliaryService("a", 100, 
shutdown));
-    shutdown.execute();
-
-    Module testModule = new AbstractModule() {
-      @Override protected void configure() {
-        LifecycleModule.runnerBinder(binder()).addBinding().toInstance(runner);
-      }
-    };
-
-    Injector injector = Guice.createInjector(new SystemModule(), testModule);
-    LocalServiceRegistry registry = 
injector.getInstance(LocalServiceRegistry.class);
-
-    control.replay();
-
-    assertEquals(Optional.<InetSocketAddress>absent(), 
registry.getPrimarySocket());
-    assertEquals(ImmutableMap.of("a", getLocalAddress(100)), 
registry.getAuxiliarySockets());
-    
injector.getInstance(ShutdownRegistry.ShutdownRegistryImpl.class).execute();
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void testFailedLauncher() throws Exception {
-    final ServiceRunner runner = createMock(ServiceRunner.class);
-
-    expect(runner.launch()).andThrow(new LaunchException("Injected failure."));
-
-    Module testModule = new AbstractModule() {
-      @Override protected void configure() {
-        LifecycleModule.runnerBinder(binder()).addBinding().toInstance(runner);
-      }
-    };
-
-    Injector injector = Guice.createInjector(new SystemModule(), testModule);
-    LocalServiceRegistry registry = 
injector.getInstance(LocalServiceRegistry.class);
-
-    control.replay();
-
-    assertEquals(Optional.of(getLocalAddress(100)), 
registry.getPrimarySocket());
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/commons/src/test/java/org/apache/aurora/common/application/modules/LocalServiceRegistryTest.java
----------------------------------------------------------------------
diff --git 
a/commons/src/test/java/org/apache/aurora/common/application/modules/LocalServiceRegistryTest.java
 
b/commons/src/test/java/org/apache/aurora/common/application/modules/LocalServiceRegistryTest.java
deleted file mode 100644
index 7f679cb..0000000
--- 
a/commons/src/test/java/org/apache/aurora/common/application/modules/LocalServiceRegistryTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/**
- * 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 org.apache.aurora.common.application.modules;
-
-import java.net.InetSocketAddress;
-import java.util.Map;
-import java.util.Set;
-
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Maps;
-import com.google.inject.Provider;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import org.apache.aurora.common.application.ShutdownRegistry;
-import 
org.apache.aurora.common.application.modules.LifecycleModule.LaunchException;
-import 
org.apache.aurora.common.application.modules.LifecycleModule.ServiceRunner;
-import 
org.apache.aurora.common.application.modules.LocalServiceRegistry.LocalService;
-import org.apache.aurora.common.base.Commands;
-import org.apache.aurora.common.testing.easymock.EasyMockTest;
-
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-/**
- * @author William Farner
- */
-public class LocalServiceRegistryTest extends EasyMockTest {
-
-  private static final Function<InetSocketAddress, Integer> INET_TO_PORT =
-      new Function<InetSocketAddress, Integer>() {
-        @Override public Integer apply(InetSocketAddress address) {
-          return address.getPort();
-        }
-      };
-
-  private static final String A = "a";
-  private static final String B = "b";
-  private static final String C = "c";
-
-  private ServiceRunner runner1;
-  private ServiceRunner runner2;
-  private Provider<Set<ServiceRunner>> serviceProvider;
-  private ShutdownRegistry shutdownRegistry;
-  private LocalServiceRegistry registry;
-
-  @Before
-  public void setUp() {
-    runner1 = createMock(ServiceRunner.class);
-    runner2 = createMock(ServiceRunner.class);
-    serviceProvider = createMock(new Clazz<Provider<Set<ServiceRunner>>>() { 
});
-    shutdownRegistry = createMock(ShutdownRegistry.class);
-    registry = new LocalServiceRegistry(serviceProvider, shutdownRegistry);
-  }
-
-  @Test
-  public void testCreate() throws LaunchException {
-    expect(serviceProvider.get()).andReturn(ImmutableSet.of(runner1));
-    expect(runner1.launch()).andReturn(auxiliary(A, 2));
-    shutdownRegistry.addAction(Commands.NOOP);
-
-    control.replay();
-
-    checkPorts(ImmutableMap.of(A, 2));
-  }
-
-  private LocalService auxiliary(String name, int port) {
-    return LocalService.auxiliaryService(name, port, Commands.NOOP);
-  }
-
-  private LocalService auxiliary(Set<String> names, int port) {
-    return LocalService.auxiliaryService(names, port, Commands.NOOP);
-  }
-
-  @Test
-  public void testNoPrimary() throws LaunchException {
-    expect(serviceProvider.get()).andReturn(ImmutableSet.of(runner1));
-    expect(runner1.launch()).andReturn(auxiliary(A, 2));
-    shutdownRegistry.addAction(Commands.NOOP);
-    expectLastCall().times(1);
-
-    control.replay();
-
-    assertFalse(registry.getPrimarySocket().isPresent());
-  }
-
-  @Test(expected = IllegalArgumentException.class)
-  public void testDuplicateName() throws LaunchException {
-    expect(serviceProvider.get()).andReturn(ImmutableSet.of(runner1, runner2));
-    expect(runner1.launch()).andReturn(auxiliary(A, 1));
-    expect(runner2.launch()).andReturn(auxiliary(A, 2));
-    shutdownRegistry.addAction(Commands.NOOP);
-    expectLastCall().times(2);
-
-    control.replay();
-
-    registry.getPrimarySocket();
-  }
-
-  @Test
-  public void testAllowsPortReuse() throws LaunchException {
-    expect(serviceProvider.get()).andReturn(ImmutableSet.of(runner1, runner2));
-    expect(runner1.launch()).andReturn(auxiliary(A, 2));
-    expect(runner2.launch()).andReturn(auxiliary(B, 2));
-    shutdownRegistry.addAction(Commands.NOOP);
-    expectLastCall().times(2);
-
-    control.replay();
-
-    checkPorts(ImmutableMap.of(A, 2, B, 2));
-  }
-
-  @Test
-  public void testMultiNameBreakout() throws LaunchException {
-    expect(serviceProvider.get()).andReturn(ImmutableSet.of(runner1, runner2));
-    expect(runner1.launch()).andReturn(auxiliary(A, 2));
-    expect(runner2.launch()).andReturn(auxiliary(ImmutableSet.of(B, C), 6));
-    shutdownRegistry.addAction(Commands.NOOP);
-    expectLastCall().times(2);
-
-    control.replay();
-
-    checkPorts(ImmutableMap.of(A, 2, B, 6, C, 6));
-  }
-
-  private void checkPorts(Map<String, Integer> expected) {
-    assertEquals(Optional.<InetSocketAddress>absent(), 
registry.getPrimarySocket());
-    assertEquals(expected, 
Maps.transformValues(registry.getAuxiliarySockets(), INET_TO_PORT));
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/commons/src/test/java/org/apache/aurora/common/application/modules/StartStatPollerTest.java
----------------------------------------------------------------------
diff --git 
a/commons/src/test/java/org/apache/aurora/common/application/modules/StartStatPollerTest.java
 
b/commons/src/test/java/org/apache/aurora/common/application/modules/StartStatPollerTest.java
deleted file mode 100644
index 5860eab..0000000
--- 
a/commons/src/test/java/org/apache/aurora/common/application/modules/StartStatPollerTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * 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 org.apache.aurora.common.application.modules;
-
-import java.util.Properties;
-
-import org.apache.aurora.common.application.ShutdownRegistry;
-import org.junit.Test;
-
-import org.apache.aurora.common.stats.Stat;
-import org.apache.aurora.common.stats.Stats;
-import org.apache.aurora.common.stats.TimeSeriesRepository;
-import org.apache.aurora.common.testing.easymock.EasyMockTest;
-import org.apache.aurora.common.util.BuildInfo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-public class StartStatPollerTest extends EasyMockTest {
-  @Test
-  public void testStartStatPollerExecute() {
-    ShutdownRegistry shutdownRegistry = createMock(ShutdownRegistry.class);
-    TimeSeriesRepository repository = createMock(TimeSeriesRepository.class);
-
-    Properties properties = new Properties();
-    final Long gitRevisionNumber = 1404461016779713L;
-    properties.setProperty(BuildInfo.Key.GIT_REVISION_NUMBER.value, 
gitRevisionNumber.toString());
-    String gitRevision = "foo_branch";
-    properties.setProperty(BuildInfo.Key.GIT_REVISION.value, gitRevision);
-    BuildInfo buildInfo = new BuildInfo(properties);
-
-    StatsModule.StartStatPoller poller =
-        new StatsModule.StartStatPoller(shutdownRegistry, buildInfo, 
repository);
-
-    repository.start(shutdownRegistry);
-    control.replay();
-
-    poller.execute();
-
-    Stat<Long> gitRevisionNumberStat =
-        
Stats.getVariable(Stats.normalizeName(BuildInfo.Key.GIT_REVISION_NUMBER.value));
-    assertEquals(gitRevisionNumber, gitRevisionNumberStat.read());
-
-    Stat<String> gitRevisionStat =
-        
Stats.getVariable(Stats.normalizeName(BuildInfo.Key.GIT_REVISION.value));
-    assertEquals(gitRevision, gitRevisionStat.read());
-
-    Stat<String> gitBranchNameStat =
-        
Stats.getVariable(Stats.normalizeName(BuildInfo.Key.GIT_BRANCHNAME.value));
-    assertNull(gitBranchNameStat);
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 
b/src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java
index 0c440b5..8047622 100644
--- a/src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java
+++ b/src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java
@@ -28,8 +28,8 @@ import com.google.common.net.HostAndPort;
 import com.google.inject.AbstractModule;
 import com.google.inject.Module;
 
-import org.apache.aurora.common.application.AbstractApplication;
 import org.apache.aurora.common.application.AppLauncher;
+import org.apache.aurora.common.application.Application;
 import org.apache.aurora.common.application.Lifecycle;
 import org.apache.aurora.common.application.modules.StatsModule;
 import org.apache.aurora.common.args.Arg;
@@ -66,8 +66,7 @@ import static 
org.apache.aurora.common.logging.RootLogConfig.Configuration;
 /**
  * Launcher for the aurora scheduler.
  */
-public class SchedulerMain extends AbstractApplication {
-
+public class SchedulerMain implements Application {
   private static final Logger LOG = 
Logger.getLogger(SchedulerMain.class.getName());
 
   @NotNull
@@ -216,7 +215,6 @@ public class SchedulerMain extends AbstractApplication {
         .build();
   }
 
-  @Override
   public void run() {
     // Setup log4j to match our jul glog config in order to pick up zookeeper 
logging.
     Configuration logConfiguration = RootLogConfig.configurationFromFlags();

http://git-wip-us.apache.org/repos/asf/aurora/blob/f2856478/src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 
b/src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java
index 7f0cb5c..50838de 100644
--- 
a/src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java
+++ 
b/src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java
@@ -15,7 +15,6 @@ package org.apache.aurora.scheduler.storage.log;
 
 import java.util.Arrays;
 import java.util.Map;
-import java.util.Properties;
 import java.util.logging.Logger;
 
 import javax.inject.Inject;
@@ -24,7 +23,6 @@ import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableSet;
 
 import org.apache.aurora.common.inject.TimedInterceptor.Timed;
-import org.apache.aurora.common.util.BuildInfo;
 import org.apache.aurora.common.util.Clock;
 import org.apache.aurora.gen.HostAttributes;
 import org.apache.aurora.gen.JobInstanceUpdateEvent;
@@ -154,16 +152,9 @@ public class SnapshotStoreImpl implements 
SnapshotStore<Snapshot> {
       new SnapshotField() {
         @Override
         public void saveToSnapshot(StoreProvider store, Snapshot snapshot) {
-          Properties props = new BuildInfo().getProperties();
-
           snapshot.setSchedulerMetadata(
                 new SchedulerMetadata()
                   
.setFrameworkId(store.getSchedulerStore().fetchFrameworkId().orNull())
-                  
.setRevision(props.getProperty(BuildInfo.Key.GIT_REVISION.value))
-                  .setTag(props.getProperty(BuildInfo.Key.GIT_TAG.value))
-                  
.setTimestamp(props.getProperty(BuildInfo.Key.TIMESTAMP.value))
-                  .setUser(props.getProperty(BuildInfo.Key.USER.value))
-                  .setMachine(props.getProperty(BuildInfo.Key.MACHINE.value))
                   .setVersion(CURRENT_API_VERSION));
         }
 

Reply via email to