http://git-wip-us.apache.org/repos/asf/hadoop/blob/87700d45/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreMembershipState.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreMembershipState.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreMembershipState.java
deleted file mode 100644
index 26f081b..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreMembershipState.java
+++ /dev/null
@@ -1,463 +0,0 @@
-/**
- * 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.hadoop.hdfs.server.federation.store;
-
-import static 
org.apache.hadoop.hdfs.server.federation.FederationTestUtils.NAMENODES;
-import static 
org.apache.hadoop.hdfs.server.federation.FederationTestUtils.NAMESERVICES;
-import static 
org.apache.hadoop.hdfs.server.federation.FederationTestUtils.ROUTERS;
-import static 
org.apache.hadoop.hdfs.server.federation.FederationTestUtils.verifyException;
-import static 
org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils.clearRecords;
-import static 
org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils.createMockRegistrationForNamenode;
-import static 
org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils.synchronizeRecords;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.hadoop.hdfs.DFSConfigKeys;
-import 
org.apache.hadoop.hdfs.server.federation.resolver.FederationNamenodeServiceState;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.GetNamenodeRegistrationsRequest;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.GetNamenodeRegistrationsResponse;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.NamenodeHeartbeatRequest;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.NamenodeHeartbeatResponse;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.UpdateNamenodeRegistrationRequest;
-import org.apache.hadoop.hdfs.server.federation.store.records.MembershipState;
-import org.apache.hadoop.util.Time;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * Test the basic {@link MembershipStore} membership functionality.
- */
-public class TestStateStoreMembershipState extends TestStateStoreBase {
-
-  private static MembershipStore membershipStore;
-
-  @BeforeClass
-  public static void create() {
-    // Reduce expirations to 5 seconds
-    getConf().setLong(
-        DFSConfigKeys.FEDERATION_STORE_MEMBERSHIP_EXPIRATION_MS,
-        TimeUnit.SECONDS.toMillis(5));
-  }
-
-  @Before
-  public void setup() throws IOException, InterruptedException {
-
-    membershipStore =
-        getStateStore().getRegisteredRecordStore(MembershipStore.class);
-
-    // Clear NN registrations
-    assertTrue(clearRecords(getStateStore(), MembershipState.class));
-  }
-
-  @Test
-  public void testNamenodeStateOverride() throws Exception {
-    // Populate the state store
-    // 1) ns0:nn0 - Standby
-    String ns = "ns0";
-    String nn = "nn0";
-    MembershipState report = createRegistration(
-        ns, nn, ROUTERS[1], FederationNamenodeServiceState.STANDBY);
-    assertTrue(namenodeHeartbeat(report));
-
-    // Load data into cache and calculate quorum
-    assertTrue(getStateStore().loadCache(MembershipStore.class, true));
-
-    MembershipState existingState = getNamenodeRegistration(ns, nn);
-    assertEquals(
-        FederationNamenodeServiceState.STANDBY, existingState.getState());
-
-    // Override cache
-    UpdateNamenodeRegistrationRequest request =
-        UpdateNamenodeRegistrationRequest.newInstance(
-            ns, nn, FederationNamenodeServiceState.ACTIVE);
-    
assertTrue(membershipStore.updateNamenodeRegistration(request).getResult());
-
-    MembershipState newState = getNamenodeRegistration(ns, nn);
-    assertEquals(FederationNamenodeServiceState.ACTIVE, newState.getState());
-  }
-
-  @Test
-  public void testStateStoreDisconnected() throws Exception {
-
-    // Close the data store driver
-    getStateStore().closeDriver();
-    assertFalse(getStateStore().isDriverReady());
-
-    NamenodeHeartbeatRequest hbRequest = 
NamenodeHeartbeatRequest.newInstance();
-    hbRequest.setNamenodeMembership(
-        createMockRegistrationForNamenode(
-            "test", "test", FederationNamenodeServiceState.UNAVAILABLE));
-    verifyException(membershipStore, "namenodeHeartbeat",
-        StateStoreUnavailableException.class,
-        new Class[] {NamenodeHeartbeatRequest.class},
-        new Object[] {hbRequest });
-
-    // Information from cache, no exception should be triggered for these
-    // TODO - should cached info expire at some point?
-    GetNamenodeRegistrationsRequest getRequest =
-        GetNamenodeRegistrationsRequest.newInstance();
-    verifyException(membershipStore,
-        "getNamenodeRegistrations", null,
-        new Class[] {GetNamenodeRegistrationsRequest.class},
-        new Object[] {getRequest});
-
-    verifyException(membershipStore,
-        "getExpiredNamenodeRegistrations", null,
-        new Class[] {GetNamenodeRegistrationsRequest.class},
-        new Object[] {getRequest});
-
-    UpdateNamenodeRegistrationRequest overrideRequest =
-        UpdateNamenodeRegistrationRequest.newInstance();
-    verifyException(membershipStore,
-        "updateNamenodeRegistration", null,
-        new Class[] {UpdateNamenodeRegistrationRequest.class},
-        new Object[] {overrideRequest});
-  }
-
-  private void registerAndLoadRegistrations(
-      List<MembershipState> registrationList) throws IOException {
-    // Populate
-    assertTrue(synchronizeRecords(
-        getStateStore(), registrationList, MembershipState.class));
-
-    // Load into cache
-    assertTrue(getStateStore().loadCache(MembershipStore.class, true));
-  }
-
-  private MembershipState createRegistration(String ns, String nn,
-      String router, FederationNamenodeServiceState state) throws IOException {
-    MembershipState record = MembershipState.newInstance(
-        router, ns,
-        nn, "testcluster", "testblock-" + ns, "testrpc-"+ ns + nn,
-        "testservice-"+ ns + nn, "testlifeline-"+ ns + nn,
-        "testweb-" + ns + nn, state, false);
-    return record;
-  }
-
-  @Test
-  public void testRegistrationMajorityQuorum()
-      throws InterruptedException, IOException {
-
-    // Populate the state store with a set of non-matching elements
-    // 1) ns0:nn0 - Standby (newest)
-    // 2) ns0:nn0 - Active (oldest)
-    // 3) ns0:nn0 - Active (2nd oldest)
-    // 4) ns0:nn0 - Active (3nd oldest element, newest active element)
-    // Verify the selected entry is the newest majority opinion (4)
-    String ns = "ns0";
-    String nn = "nn0";
-
-    // Active - oldest
-    MembershipState report = createRegistration(
-        ns, nn, ROUTERS[1], FederationNamenodeServiceState.ACTIVE);
-    assertTrue(namenodeHeartbeat(report));
-    Thread.sleep(1000);
-
-    // Active - 2nd oldest
-    report = createRegistration(
-        ns, nn, ROUTERS[2], FederationNamenodeServiceState.ACTIVE);
-    assertTrue(namenodeHeartbeat(report));
-    Thread.sleep(1000);
-
-    // Active - 3rd oldest, newest active element
-    report = createRegistration(
-        ns, nn, ROUTERS[3], FederationNamenodeServiceState.ACTIVE);
-    assertTrue(namenodeHeartbeat(report));
-
-    // standby - newest overall
-    report = createRegistration(
-        ns, nn, ROUTERS[0], FederationNamenodeServiceState.STANDBY);
-    assertTrue(namenodeHeartbeat(report));
-
-    // Load and calculate quorum
-    assertTrue(getStateStore().loadCache(MembershipStore.class, true));
-
-    // Verify quorum entry
-    MembershipState quorumEntry = getNamenodeRegistration(
-        report.getNameserviceId(), report.getNamenodeId());
-    assertNotNull(quorumEntry);
-    assertEquals(quorumEntry.getRouterId(), ROUTERS[3]);
-  }
-
-  @Test
-  public void testRegistrationQuorumExcludesExpired()
-      throws InterruptedException, IOException {
-
-    // Populate the state store with some expired entries and verify the 
expired
-    // entries are ignored.
-    // 1) ns0:nn0 - Active
-    // 2) ns0:nn0 - Expired
-    // 3) ns0:nn0 - Expired
-    // 4) ns0:nn0 - Expired
-    // Verify the selected entry is the active entry
-    List<MembershipState> registrationList = new ArrayList<>();
-    String ns = "ns0";
-    String nn = "nn0";
-    String rpcAddress = "testrpcaddress";
-    String serviceAddress = "testserviceaddress";
-    String lifelineAddress = "testlifelineaddress";
-    String blockPoolId = "testblockpool";
-    String clusterId = "testcluster";
-    String webAddress = "testwebaddress";
-    boolean safemode = false;
-
-    // Active
-    MembershipState record = MembershipState.newInstance(
-        ROUTERS[0], ns, nn, clusterId, blockPoolId,
-        rpcAddress, serviceAddress, lifelineAddress, webAddress,
-        FederationNamenodeServiceState.ACTIVE, safemode);
-    registrationList.add(record);
-
-    // Expired
-    record = MembershipState.newInstance(
-        ROUTERS[1], ns, nn, clusterId, blockPoolId,
-        rpcAddress, serviceAddress, lifelineAddress, webAddress,
-        FederationNamenodeServiceState.EXPIRED, safemode);
-    registrationList.add(record);
-
-    // Expired
-    record = MembershipState.newInstance(
-        ROUTERS[2], ns, nn, clusterId, blockPoolId,
-        rpcAddress, serviceAddress, lifelineAddress, webAddress,
-        FederationNamenodeServiceState.EXPIRED, safemode);
-    registrationList.add(record);
-
-    // Expired
-    record = MembershipState.newInstance(
-        ROUTERS[3], ns, nn, clusterId, blockPoolId,
-        rpcAddress, serviceAddress, lifelineAddress, webAddress,
-        FederationNamenodeServiceState.EXPIRED, safemode);
-    registrationList.add(record);
-    registerAndLoadRegistrations(registrationList);
-
-    // Verify quorum entry chooses active membership
-    MembershipState quorumEntry = getNamenodeRegistration(
-        record.getNameserviceId(), record.getNamenodeId());
-    assertNotNull(quorumEntry);
-    assertEquals(ROUTERS[0], quorumEntry.getRouterId());
-  }
-
-  @Test
-  public void testRegistrationQuorumAllExpired() throws IOException {
-
-    // 1) ns0:nn0 - Expired (oldest)
-    // 2) ns0:nn0 - Expired
-    // 3) ns0:nn0 - Expired
-    // 4) ns0:nn0 - Expired
-    // Verify no entry is either selected or cached
-    List<MembershipState> registrationList = new ArrayList<>();
-    String ns = NAMESERVICES[0];
-    String nn = NAMENODES[0];
-    String rpcAddress = "testrpcaddress";
-    String serviceAddress = "testserviceaddress";
-    String lifelineAddress = "testlifelineaddress";
-    String blockPoolId = "testblockpool";
-    String clusterId = "testcluster";
-    String webAddress = "testwebaddress";
-    boolean safemode = false;
-    long startingTime = Time.now();
-
-    // Expired
-    MembershipState record = MembershipState.newInstance(
-        ROUTERS[0], ns, nn, clusterId, blockPoolId,
-        rpcAddress, webAddress, lifelineAddress, webAddress,
-        FederationNamenodeServiceState.EXPIRED, safemode);
-    record.setDateModified(startingTime - 10000);
-    registrationList.add(record);
-
-    // Expired
-    record = MembershipState.newInstance(
-        ROUTERS[1], ns, nn, clusterId, blockPoolId,
-        rpcAddress, serviceAddress, lifelineAddress, webAddress,
-        FederationNamenodeServiceState.EXPIRED, safemode);
-    record.setDateModified(startingTime);
-    registrationList.add(record);
-
-    // Expired
-    record = MembershipState.newInstance(
-        ROUTERS[2], ns, nn, clusterId, blockPoolId,
-        rpcAddress, serviceAddress, lifelineAddress, webAddress,
-        FederationNamenodeServiceState.EXPIRED, safemode);
-    record.setDateModified(startingTime);
-    registrationList.add(record);
-
-    // Expired
-    record = MembershipState.newInstance(
-        ROUTERS[3], ns, nn, clusterId, blockPoolId,
-        rpcAddress, serviceAddress, lifelineAddress, webAddress,
-        FederationNamenodeServiceState.EXPIRED, safemode);
-    record.setDateModified(startingTime);
-    registrationList.add(record);
-
-    registerAndLoadRegistrations(registrationList);
-
-    // Verify no entry is found for this nameservice
-    assertNull(getNamenodeRegistration(
-        record.getNameserviceId(), record.getNamenodeId()));
-  }
-
-  @Test
-  public void testRegistrationNoQuorum()
-      throws InterruptedException, IOException {
-
-    // Populate the state store with a set of non-matching elements
-    // 1) ns0:nn0 - Standby (newest)
-    // 2) ns0:nn0 - Standby (oldest)
-    // 3) ns0:nn0 - Active (2nd oldest)
-    // 4) ns0:nn0 - Active (3nd oldest element, newest active element)
-    // Verify the selected entry is the newest entry (1)
-    MembershipState report1 = createRegistration(
-        NAMESERVICES[0], NAMENODES[0], ROUTERS[1],
-        FederationNamenodeServiceState.STANDBY);
-    assertTrue(namenodeHeartbeat(report1));
-    Thread.sleep(100);
-    MembershipState report2 = createRegistration(
-        NAMESERVICES[0], NAMENODES[0], ROUTERS[2],
-        FederationNamenodeServiceState.ACTIVE);
-    assertTrue(namenodeHeartbeat(report2));
-    Thread.sleep(100);
-    MembershipState report3 = createRegistration(
-        NAMESERVICES[0], NAMENODES[0], ROUTERS[3],
-        FederationNamenodeServiceState.ACTIVE);
-    assertTrue(namenodeHeartbeat(report3));
-    Thread.sleep(100);
-    MembershipState report4 = createRegistration(
-        NAMESERVICES[0], NAMENODES[0], ROUTERS[0],
-        FederationNamenodeServiceState.STANDBY);
-    assertTrue(namenodeHeartbeat(report4));
-
-    // Load and calculate quorum
-    assertTrue(getStateStore().loadCache(MembershipStore.class, true));
-
-    // Verify quorum entry uses the newest data, even though it is standby
-    MembershipState quorumEntry = getNamenodeRegistration(
-        report1.getNameserviceId(), report1.getNamenodeId());
-    assertNotNull(quorumEntry);
-    assertEquals(ROUTERS[0], quorumEntry.getRouterId());
-    assertEquals(
-        FederationNamenodeServiceState.STANDBY, quorumEntry.getState());
-  }
-
-  @Test
-  public void testRegistrationExpired()
-      throws InterruptedException, IOException {
-
-    // Populate the state store with a single NN element
-    // 1) ns0:nn0 - Active
-    // Wait for the entry to expire without heartbeating
-    // Verify the NN entry is populated as EXPIRED internally in the state 
store
-
-    MembershipState report = createRegistration(
-        NAMESERVICES[0], NAMENODES[0], ROUTERS[0],
-        FederationNamenodeServiceState.ACTIVE);
-    assertTrue(namenodeHeartbeat(report));
-
-    // Load cache
-    assertTrue(getStateStore().loadCache(MembershipStore.class, true));
-
-    // Verify quorum and entry
-    MembershipState quorumEntry = getNamenodeRegistration(
-        report.getNameserviceId(), report.getNamenodeId());
-    assertNotNull(quorumEntry);
-    assertEquals(ROUTERS[0], quorumEntry.getRouterId());
-    assertEquals(FederationNamenodeServiceState.ACTIVE, 
quorumEntry.getState());
-
-    // Wait past expiration (set in conf to 5 seconds)
-    Thread.sleep(6000);
-    // Reload cache
-    assertTrue(getStateStore().loadCache(MembershipStore.class, true));
-
-    // Verify entry is now expired and is no longer in the cache
-    quorumEntry = getNamenodeRegistration(NAMESERVICES[0], NAMENODES[0]);
-    assertNull(quorumEntry);
-
-    // Verify entry is now expired and can't be used by RPC service
-    quorumEntry = getNamenodeRegistration(
-        report.getNameserviceId(), report.getNamenodeId());
-    assertNull(quorumEntry);
-
-    // Heartbeat again, updates dateModified
-    assertTrue(namenodeHeartbeat(report));
-    // Reload cache
-    assertTrue(getStateStore().loadCache(MembershipStore.class, true));
-
-    // Verify updated entry marked as active and is accessible to RPC server
-    quorumEntry = getNamenodeRegistration(
-        report.getNameserviceId(), report.getNamenodeId());
-    assertNotNull(quorumEntry);
-    assertEquals(ROUTERS[0], quorumEntry.getRouterId());
-    assertEquals(FederationNamenodeServiceState.ACTIVE, 
quorumEntry.getState());
-  }
-
-  /**
-   * Get a single namenode membership record from the store.
-   *
-   * @param nsId The HDFS nameservice ID to search for
-   * @param nnId The HDFS namenode ID to search for
-   * @return The single NamenodeMembershipRecord that matches the query or null
-   *         if not found.
-   * @throws IOException if the query could not be executed.
-   */
-  private MembershipState getNamenodeRegistration(
-      final String nsId, final String nnId) throws IOException {
-
-    MembershipState partial = MembershipState.newInstance();
-    partial.setNameserviceId(nsId);
-    partial.setNamenodeId(nnId);
-    GetNamenodeRegistrationsRequest request =
-        GetNamenodeRegistrationsRequest.newInstance(partial);
-    GetNamenodeRegistrationsResponse response =
-        membershipStore.getNamenodeRegistrations(request);
-
-    List<MembershipState> results = response.getNamenodeMemberships();
-    if (results != null && results.size() == 1) {
-      MembershipState record = results.get(0);
-      return record;
-    }
-    return null;
-  }
-
-  /**
-   * Register a namenode heartbeat with the state store.
-   *
-   * @param store FederationMembershipStateStore instance to retrieve the
-   *          membership data records.
-   * @param namenode A fully populated namenode membership record to be
-   *          committed to the data store.
-   * @return True if successful, false otherwise.
-   * @throws IOException if the state store query could not be performed.
-   */
-  private boolean namenodeHeartbeat(MembershipState namenode)
-      throws IOException {
-
-    NamenodeHeartbeatRequest request =
-        NamenodeHeartbeatRequest.newInstance(namenode);
-    NamenodeHeartbeatResponse response =
-        membershipStore.namenodeHeartbeat(request);
-    return response.getResult();
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hadoop/blob/87700d45/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreMountTable.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreMountTable.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreMountTable.java
deleted file mode 100644
index d30d6ba..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreMountTable.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/**
- * 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.hadoop.hdfs.server.federation.store;
-
-import static 
org.apache.hadoop.hdfs.server.federation.FederationTestUtils.NAMESERVICES;
-import static 
org.apache.hadoop.hdfs.server.federation.FederationTestUtils.verifyException;
-import static 
org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils.clearRecords;
-import static 
org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils.createMockMountTable;
-import static 
org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils.synchronizeRecords;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.AddMountTableEntryRequest;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.AddMountTableEntryResponse;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.GetMountTableEntriesRequest;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.GetMountTableEntriesResponse;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.RemoveMountTableEntryRequest;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.UpdateMountTableEntryRequest;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.UpdateMountTableEntryResponse;
-import org.apache.hadoop.hdfs.server.federation.store.records.MountTable;
-import org.apache.hadoop.hdfs.server.federation.store.records.QueryResult;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * Test the basic {@link StateStoreService}
- * {@link MountTableStore} functionality.
- */
-public class TestStateStoreMountTable extends TestStateStoreBase {
-
-  private static List<String> nameservices;
-  private static MountTableStore mountStore;
-
-  @BeforeClass
-  public static void create() throws IOException {
-    nameservices = new ArrayList<>();
-    nameservices.add(NAMESERVICES[0]);
-    nameservices.add(NAMESERVICES[1]);
-  }
-
-  @Before
-  public void setup() throws IOException, InterruptedException {
-    mountStore =
-        getStateStore().getRegisteredRecordStore(MountTableStore.class);
-    // Clear Mount table registrations
-    assertTrue(clearRecords(getStateStore(), MountTable.class));
-  }
-
-  @Test
-  public void testStateStoreDisconnected() throws Exception {
-
-    // Close the data store driver
-    getStateStore().closeDriver();
-    assertFalse(getStateStore().isDriverReady());
-
-    // Test APIs that access the store to check they throw the correct 
exception
-    AddMountTableEntryRequest addRequest =
-        AddMountTableEntryRequest.newInstance();
-    verifyException(mountStore, "addMountTableEntry",
-        StateStoreUnavailableException.class,
-        new Class[] {AddMountTableEntryRequest.class},
-        new Object[] {addRequest});
-
-    UpdateMountTableEntryRequest updateRequest =
-        UpdateMountTableEntryRequest.newInstance();
-    verifyException(mountStore, "updateMountTableEntry",
-        StateStoreUnavailableException.class,
-        new Class[] {UpdateMountTableEntryRequest.class},
-        new Object[] {updateRequest});
-
-    RemoveMountTableEntryRequest removeRequest =
-        RemoveMountTableEntryRequest.newInstance();
-    verifyException(mountStore, "removeMountTableEntry",
-        StateStoreUnavailableException.class,
-        new Class[] {RemoveMountTableEntryRequest.class},
-        new Object[] {removeRequest});
-
-    GetMountTableEntriesRequest getRequest =
-        GetMountTableEntriesRequest.newInstance();
-    mountStore.loadCache(true);
-    verifyException(mountStore, "getMountTableEntries",
-        StateStoreUnavailableException.class,
-        new Class[] {GetMountTableEntriesRequest.class},
-        new Object[] {getRequest});
-  }
-
-  @Test
-  public void testSynchronizeMountTable() throws IOException {
-    // Synchronize and get mount table entries
-    List<MountTable> entries = createMockMountTable(nameservices);
-    assertTrue(synchronizeRecords(getStateStore(), entries, MountTable.class));
-    for (MountTable e : entries) {
-      mountStore.loadCache(true);
-      MountTable entry = getMountTableEntry(e.getSourcePath());
-      assertNotNull(entry);
-      assertEquals(e.getDefaultLocation().getDest(),
-          entry.getDefaultLocation().getDest());
-    }
-  }
-
-  @Test
-  public void testAddMountTableEntry() throws IOException {
-
-    // Add 1
-    List<MountTable> entries = createMockMountTable(nameservices);
-    List<MountTable> entries1 = getMountTableEntries("/").getRecords();
-    assertEquals(0, entries1.size());
-    MountTable entry0 = entries.get(0);
-    AddMountTableEntryRequest request =
-        AddMountTableEntryRequest.newInstance(entry0);
-    AddMountTableEntryResponse response =
-        mountStore.addMountTableEntry(request);
-    assertTrue(response.getStatus());
-
-    mountStore.loadCache(true);
-    List<MountTable> entries2 = getMountTableEntries("/").getRecords();
-    assertEquals(1, entries2.size());
-  }
-
-  @Test
-  public void testRemoveMountTableEntry() throws IOException {
-
-    // Add many
-    List<MountTable> entries = createMockMountTable(nameservices);
-    synchronizeRecords(getStateStore(), entries, MountTable.class);
-    mountStore.loadCache(true);
-    List<MountTable> entries1 = getMountTableEntries("/").getRecords();
-    assertEquals(entries.size(), entries1.size());
-
-    // Remove 1
-    RemoveMountTableEntryRequest request =
-        RemoveMountTableEntryRequest.newInstance();
-    request.setSrcPath(entries.get(0).getSourcePath());
-    assertTrue(mountStore.removeMountTableEntry(request).getStatus());
-
-    // Verify remove
-    mountStore.loadCache(true);
-    List<MountTable> entries2 = getMountTableEntries("/").getRecords();
-    assertEquals(entries.size() - 1, entries2.size());
-  }
-
-  @Test
-  public void testUpdateMountTableEntry() throws IOException {
-
-    // Add 1
-    List<MountTable> entries = createMockMountTable(nameservices);
-    MountTable entry0 = entries.get(0);
-    String srcPath = entry0.getSourcePath();
-    String nsId = entry0.getDefaultLocation().getNameserviceId();
-    AddMountTableEntryRequest request =
-        AddMountTableEntryRequest.newInstance(entry0);
-    AddMountTableEntryResponse response =
-        mountStore.addMountTableEntry(request);
-    assertTrue(response.getStatus());
-
-    // Verify
-    mountStore.loadCache(true);
-    MountTable matchingEntry0 = getMountTableEntry(srcPath);
-    assertNotNull(matchingEntry0);
-    assertEquals(nsId, matchingEntry0.getDefaultLocation().getNameserviceId());
-
-    // Edit destination nameservice for source path
-    Map<String, String> destMap =
-        Collections.singletonMap("testnameservice", "/");
-    MountTable replacement =
-        MountTable.newInstance(srcPath, destMap);
-    UpdateMountTableEntryRequest updateRequest =
-        UpdateMountTableEntryRequest.newInstance(replacement);
-    UpdateMountTableEntryResponse updateResponse =
-        mountStore.updateMountTableEntry(updateRequest);
-    assertTrue(updateResponse.getStatus());
-
-    // Verify
-    mountStore.loadCache(true);
-    MountTable matchingEntry1 = getMountTableEntry(srcPath);
-    assertNotNull(matchingEntry1);
-    assertEquals("testnameservice",
-        matchingEntry1.getDefaultLocation().getNameserviceId());
-  }
-
-  /**
-   * Gets an existing mount table record in the state store.
-   *
-   * @param mount The mount point of the record to remove.
-   * @return The matching record if found, null if it is not found.
-   * @throws IOException If the state store could not be accessed.
-   */
-  private MountTable getMountTableEntry(String mount) throws IOException {
-    GetMountTableEntriesRequest request =
-        GetMountTableEntriesRequest.newInstance(mount);
-    GetMountTableEntriesResponse response =
-        mountStore.getMountTableEntries(request);
-    List<MountTable> results = response.getEntries();
-    if (results.size() > 0) {
-      // First result is sorted to have the shortest mount string length
-      return results.get(0);
-    }
-    return null;
-  }
-
-  /**
-   * Fetch all mount table records beneath a root path.
-   *
-   * @param store FederationMountTableStore instance to commit the data.
-   * @param mount The root search path, enter "/" to return all mount table
-   *          records.
-   *
-   * @return A list of all mount table records found below the root mount.
-   *
-   * @throws IOException If the state store could not be accessed.
-   */
-  private QueryResult<MountTable> getMountTableEntries(String mount)
-      throws IOException {
-    if (mount == null) {
-      throw new IOException("Please specify a root search path");
-    }
-    GetMountTableEntriesRequest request =
-        GetMountTableEntriesRequest.newInstance();
-    request.setSrcPath(mount);
-    GetMountTableEntriesResponse response =
-        mountStore.getMountTableEntries(request);
-    List<MountTable> records = response.getEntries();
-    long timestamp = response.getTimestamp();
-    return new QueryResult<MountTable>(records, timestamp);
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hadoop/blob/87700d45/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreRouterState.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreRouterState.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreRouterState.java
deleted file mode 100644
index cbc5e7d..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/TestStateStoreRouterState.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/**
- * 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.hadoop.hdfs.server.federation.store;
-
-import static 
org.apache.hadoop.hdfs.server.federation.FederationTestUtils.verifyException;
-import static 
org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils.clearRecords;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.hadoop.hdfs.DFSConfigKeys;
-import org.apache.hadoop.hdfs.server.federation.router.FederationUtil;
-import org.apache.hadoop.hdfs.server.federation.router.RouterServiceState;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.GetRouterRegistrationRequest;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.GetRouterRegistrationsRequest;
-import 
org.apache.hadoop.hdfs.server.federation.store.protocol.RouterHeartbeatRequest;
-import org.apache.hadoop.hdfs.server.federation.store.records.RouterState;
-import org.apache.hadoop.util.Time;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * Test the basic {@link StateStoreService} {@link RouterStore} functionality.
- */
-public class TestStateStoreRouterState extends TestStateStoreBase {
-
-  private static RouterStore routerStore;
-
-  @BeforeClass
-  public static void create() {
-    // Reduce expirations to 5 seconds
-    getConf().setTimeDuration(
-        DFSConfigKeys.FEDERATION_STORE_ROUTER_EXPIRATION_MS,
-        5, TimeUnit.SECONDS);
-  }
-
-  @Before
-  public void setup() throws IOException, InterruptedException {
-
-    if (routerStore == null) {
-      routerStore =
-          getStateStore().getRegisteredRecordStore(RouterStore.class);
-    }
-
-    // Clear router status registrations
-    assertTrue(clearRecords(getStateStore(), RouterState.class));
-  }
-
-  @Test
-  public void testStateStoreDisconnected() throws Exception {
-
-    // Close the data store driver
-    getStateStore().closeDriver();
-    assertEquals(false, getStateStore().isDriverReady());
-
-    // Test all APIs that access the data store to ensure they throw the 
correct
-    // exception.
-    GetRouterRegistrationRequest getSingleRequest =
-        GetRouterRegistrationRequest.newInstance();
-    verifyException(routerStore, "getRouterRegistration",
-        StateStoreUnavailableException.class,
-        new Class[] {GetRouterRegistrationRequest.class},
-        new Object[] {getSingleRequest});
-
-    GetRouterRegistrationsRequest getRequest =
-        GetRouterRegistrationsRequest.newInstance();
-    routerStore.loadCache(true);
-    verifyException(routerStore, "getRouterRegistrations",
-        StateStoreUnavailableException.class,
-        new Class[] {GetRouterRegistrationsRequest.class},
-        new Object[] {getRequest});
-
-    RouterHeartbeatRequest hbRequest = RouterHeartbeatRequest.newInstance(
-        RouterState.newInstance("test", 0, RouterServiceState.UNINITIALIZED));
-    verifyException(routerStore, "routerHeartbeat",
-        StateStoreUnavailableException.class,
-        new Class[] {RouterHeartbeatRequest.class},
-        new Object[] {hbRequest});
-  }
-
-  //
-  // Router
-  //
-  @Test
-  public void testUpdateRouterStatus()
-      throws IllegalStateException, IOException {
-
-    long dateStarted = Time.now();
-    String address = "testaddress";
-
-    // Set
-    RouterHeartbeatRequest request = RouterHeartbeatRequest.newInstance(
-        RouterState.newInstance(
-            address, dateStarted, RouterServiceState.RUNNING));
-    assertTrue(routerStore.routerHeartbeat(request).getStatus());
-
-    // Verify
-    GetRouterRegistrationRequest getRequest =
-        GetRouterRegistrationRequest.newInstance(address);
-    RouterState record =
-        routerStore.getRouterRegistration(getRequest).getRouter();
-    assertNotNull(record);
-    assertEquals(RouterServiceState.RUNNING, record.getStatus());
-    assertEquals(address, record.getAddress());
-    assertEquals(FederationUtil.getCompileInfo(), record.getCompileInfo());
-    // Build version may vary a bit
-    assertFalse(record.getVersion().isEmpty());
-  }
-
-  @Test
-  public void testRouterStateExpired()
-      throws IOException, InterruptedException {
-
-    long dateStarted = Time.now();
-    String address = "testaddress";
-
-    RouterHeartbeatRequest request = RouterHeartbeatRequest.newInstance(
-        RouterState.newInstance(
-            address, dateStarted, RouterServiceState.RUNNING));
-    // Set
-    assertTrue(routerStore.routerHeartbeat(request).getStatus());
-
-    // Verify
-    GetRouterRegistrationRequest getRequest =
-        GetRouterRegistrationRequest.newInstance(address);
-    RouterState record =
-        routerStore.getRouterRegistration(getRequest).getRouter();
-    assertNotNull(record);
-
-    // Wait past expiration (set to 5 sec in config)
-    Thread.sleep(6000);
-
-    // Verify expired
-    RouterState r = routerStore.getRouterRegistration(getRequest).getRouter();
-    assertEquals(RouterServiceState.EXPIRED, r.getStatus());
-
-    // Heartbeat again and this shouldn't be EXPIRED anymore
-    assertTrue(routerStore.routerHeartbeat(request).getStatus());
-    r = routerStore.getRouterRegistration(getRequest).getRouter();
-    assertEquals(RouterServiceState.RUNNING, r.getStatus());
-  }
-
-  @Test
-  public void testGetAllRouterStates()
-      throws StateStoreUnavailableException, IOException {
-
-    // Set 2 entries
-    RouterHeartbeatRequest heartbeatRequest1 =
-        RouterHeartbeatRequest.newInstance(
-            RouterState.newInstance(
-                "testaddress1", Time.now(), RouterServiceState.RUNNING));
-    assertTrue(routerStore.routerHeartbeat(heartbeatRequest1).getStatus());
-
-    RouterHeartbeatRequest heartbeatRequest2 =
-        RouterHeartbeatRequest.newInstance(
-            RouterState.newInstance(
-                "testaddress2", Time.now(), RouterServiceState.RUNNING));
-    assertTrue(routerStore.routerHeartbeat(heartbeatRequest2).getStatus());
-
-    // Verify
-    routerStore.loadCache(true);
-    GetRouterRegistrationsRequest request =
-        GetRouterRegistrationsRequest.newInstance();
-    List<RouterState> entries =
-        routerStore.getRouterRegistrations(request).getRouters();
-    assertEquals(2, entries.size());
-    Collections.sort(entries);
-    assertEquals("testaddress1", entries.get(0).getAddress());
-    assertEquals("testaddress2", entries.get(1).getAddress());
-    assertEquals(RouterServiceState.RUNNING, entries.get(0).getStatus());
-    assertEquals(RouterServiceState.RUNNING, entries.get(1).getStatus());
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/87700d45/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreDriverBase.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreDriverBase.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreDriverBase.java
deleted file mode 100644
index fd29e37..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreDriverBase.java
+++ /dev/null
@@ -1,613 +0,0 @@
-/**
- * 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.hadoop.hdfs.server.federation.store.driver;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Random;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hdfs.server.federation.metrics.StateStoreMetrics;
-import 
org.apache.hadoop.hdfs.server.federation.resolver.FederationNamenodeServiceState;
-import org.apache.hadoop.hdfs.server.federation.router.RouterServiceState;
-import 
org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils;
-import org.apache.hadoop.hdfs.server.federation.store.StateStoreService;
-import org.apache.hadoop.hdfs.server.federation.store.records.BaseRecord;
-import org.apache.hadoop.hdfs.server.federation.store.records.MembershipState;
-import org.apache.hadoop.hdfs.server.federation.store.records.MountTable;
-import org.apache.hadoop.hdfs.server.federation.store.records.Query;
-import org.apache.hadoop.hdfs.server.federation.store.records.QueryResult;
-import org.apache.hadoop.hdfs.server.federation.store.records.RouterState;
-import 
org.apache.hadoop.hdfs.server.federation.store.records.StateStoreVersion;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Base tests for the driver. The particular implementations will use this to
- * test their functionality.
- */
-public class TestStateStoreDriverBase {
-
-  private static final Logger LOG =
-      LoggerFactory.getLogger(TestStateStoreDriverBase.class);
-
-  private static StateStoreService stateStore;
-  private static Configuration conf;
-
-  private static final Random RANDOM = new Random();
-
-
-  /**
-   * Get the State Store driver.
-   * @return State Store driver.
-   */
-  protected StateStoreDriver getStateStoreDriver() {
-    return stateStore.getDriver();
-  }
-
-  @After
-  public void cleanMetrics() {
-    if (stateStore != null) {
-      StateStoreMetrics metrics = stateStore.getMetrics();
-      metrics.reset();
-    }
-  }
-
-  @AfterClass
-  public static void tearDownCluster() {
-    if (stateStore != null) {
-      stateStore.stop();
-    }
-  }
-
-  /**
-   * Get a new State Store using this configuration.
-   *
-   * @param config Configuration for the State Store.
-   * @throws Exception If we cannot get the State Store.
-   */
-  public static void getStateStore(Configuration config) throws Exception {
-    conf = config;
-    stateStore = FederationStateStoreTestUtils.newStateStore(conf);
-  }
-
-  private String generateRandomString() {
-    String randomString = "randomString-" + RANDOM.nextInt();
-    return randomString;
-  }
-
-  private long generateRandomLong() {
-    return RANDOM.nextLong();
-  }
-
-  @SuppressWarnings("rawtypes")
-  private <T extends Enum> T generateRandomEnum(Class<T> enumClass) {
-    int x = RANDOM.nextInt(enumClass.getEnumConstants().length);
-    T data = enumClass.getEnumConstants()[x];
-    return data;
-  }
-
-  @SuppressWarnings("unchecked")
-  private <T extends BaseRecord> T generateFakeRecord(Class<T> recordClass)
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-
-    if (recordClass == MembershipState.class) {
-      return (T) MembershipState.newInstance(generateRandomString(),
-          generateRandomString(), generateRandomString(),
-          generateRandomString(), generateRandomString(),
-          generateRandomString(), generateRandomString(),
-          generateRandomString(), generateRandomString(),
-          generateRandomEnum(FederationNamenodeServiceState.class), false);
-    } else if (recordClass == MountTable.class) {
-      String src = "/" + generateRandomString();
-      Map<String, String> destMap = Collections.singletonMap(
-          generateRandomString(), "/" + generateRandomString());
-      return (T) MountTable.newInstance(src, destMap);
-    } else if (recordClass == RouterState.class) {
-      RouterState routerState = RouterState.newInstance(generateRandomString(),
-          generateRandomLong(), generateRandomEnum(RouterServiceState.class));
-      StateStoreVersion version = generateFakeRecord(StateStoreVersion.class);
-      routerState.setStateStoreVersion(version);
-      return (T) routerState;
-    }
-
-    return null;
-  }
-
-  /**
-   * Validate if a record is the same.
-   *
-   * @param original Original record.
-   * @param committed Committed record.
-   * @param assertEquals Assert if the records are equal or just return.
-   * @return If the record is successfully validated.
-   */
-  private boolean validateRecord(
-      BaseRecord original, BaseRecord committed, boolean assertEquals) {
-
-    boolean ret = true;
-
-    Map<String, Class<?>> fields = getFields(original);
-    for (String key : fields.keySet()) {
-      if (key.equals("dateModified") ||
-          key.equals("dateCreated") ||
-          key.equals("proto")) {
-        // Fields are updated/set on commit and fetch and may not match
-        // the fields that are initialized in a non-committed object.
-        continue;
-      }
-      Object data1 = getField(original, key);
-      Object data2 = getField(committed, key);
-      if (assertEquals) {
-        assertEquals("Field " + key + " does not match", data1, data2);
-      } else if (!data1.equals(data2)) {
-        ret = false;
-      }
-    }
-
-    long now = stateStore.getDriver().getTime();
-    assertTrue(
-        committed.getDateCreated() <= now && committed.getDateCreated() > 0);
-    assertTrue(committed.getDateModified() >= committed.getDateCreated());
-
-    return ret;
-  }
-
-  public static void removeAll(StateStoreDriver driver) throws IOException {
-    driver.removeAll(MembershipState.class);
-    driver.removeAll(MountTable.class);
-  }
-
-  public <T extends BaseRecord> void testInsert(
-      StateStoreDriver driver, Class<T> recordClass)
-          throws IllegalArgumentException, IllegalAccessException, IOException 
{
-
-    assertTrue(driver.removeAll(recordClass));
-    QueryResult<T> queryResult0 = driver.get(recordClass);
-    List<T> records0 = queryResult0.getRecords();
-    assertTrue(records0.isEmpty());
-
-    // Insert single
-    BaseRecord record = generateFakeRecord(recordClass);
-    driver.put(record, true, false);
-
-    // Verify
-    QueryResult<T> queryResult1 = driver.get(recordClass);
-    List<T> records1 = queryResult1.getRecords();
-    assertEquals(1, records1.size());
-    T record0 = records1.get(0);
-    validateRecord(record, record0, true);
-
-    // Insert multiple
-    List<T> insertList = new ArrayList<>();
-    for (int i = 0; i < 10; i++) {
-      T newRecord = generateFakeRecord(recordClass);
-      insertList.add(newRecord);
-    }
-    driver.putAll(insertList, true, false);
-
-    // Verify
-    QueryResult<T> queryResult2 = driver.get(recordClass);
-    List<T> records2 = queryResult2.getRecords();
-    assertEquals(11, records2.size());
-  }
-
-  public <T extends BaseRecord> void testFetchErrors(StateStoreDriver driver,
-      Class<T> clazz) throws IllegalAccessException, IOException {
-
-    // Fetch empty list
-    driver.removeAll(clazz);
-    QueryResult<T> result0 = driver.get(clazz);
-    assertNotNull(result0);
-    List<T> records0 = result0.getRecords();
-    assertEquals(records0.size(), 0);
-
-    // Insert single
-    BaseRecord record = generateFakeRecord(clazz);
-    assertTrue(driver.put(record, true, false));
-
-    // Verify
-    QueryResult<T> result1 = driver.get(clazz);
-    List<T> records1 = result1.getRecords();
-    assertEquals(1, records1.size());
-    validateRecord(record, records1.get(0), true);
-
-    // Test fetch single object with a bad query
-    final T fakeRecord = generateFakeRecord(clazz);
-    final Query<T> query = new Query<T>(fakeRecord);
-    T getRecord = driver.get(clazz, query);
-    assertNull(getRecord);
-
-    // Test fetch multiple objects does not exist returns empty list
-    assertEquals(driver.getMultiple(clazz, query).size(), 0);
-  }
-
-  public <T extends BaseRecord> void testPut(
-      StateStoreDriver driver, Class<T> clazz)
-          throws IllegalArgumentException, ReflectiveOperationException,
-          IOException, SecurityException {
-
-    driver.removeAll(clazz);
-    QueryResult<T> records = driver.get(clazz);
-    assertTrue(records.getRecords().isEmpty());
-
-    // Insert multiple
-    List<T> insertList = new ArrayList<>();
-    for (int i = 0; i < 10; i++) {
-      T newRecord = generateFakeRecord(clazz);
-      insertList.add(newRecord);
-    }
-
-    // Verify
-    assertTrue(driver.putAll(insertList, false, true));
-    records = driver.get(clazz);
-    assertEquals(records.getRecords().size(), 10);
-
-    // Generate a new record with the same PK fields as an existing record
-    BaseRecord updatedRecord = generateFakeRecord(clazz);
-    BaseRecord existingRecord = records.getRecords().get(0);
-    Map<String, String> primaryKeys = existingRecord.getPrimaryKeys();
-    for (Entry<String, String> entry : primaryKeys.entrySet()) {
-      String key = entry.getKey();
-      String value = entry.getValue();
-      Class<?> fieldType = getFieldType(existingRecord, key);
-      Object field = fromString(value, fieldType);
-      assertTrue(setField(updatedRecord, key, field));
-    }
-
-    // Attempt an update of an existing entry, but it is not allowed.
-    assertFalse(driver.put(updatedRecord, false, true));
-
-    // Verify no update occurred, all original records are unchanged
-    QueryResult<T> newRecords = driver.get(clazz);
-    assertTrue(newRecords.getRecords().size() == 10);
-    assertEquals("A single entry was improperly updated in the store", 10,
-        countMatchingEntries(records.getRecords(), newRecords.getRecords()));
-
-    // Update the entry (allowing updates)
-    assertTrue(driver.put(updatedRecord, true, false));
-
-    // Verify that one entry no longer matches the original set
-    newRecords = driver.get(clazz);
-    assertEquals(10, newRecords.getRecords().size());
-    assertEquals(
-        "Record of type " + clazz + " not updated in the store", 9,
-        countMatchingEntries(records.getRecords(), newRecords.getRecords()));
-  }
-
-  private int countMatchingEntries(
-      Collection<? extends BaseRecord> committedList,
-      Collection<? extends BaseRecord> matchList) {
-
-    int matchingCount = 0;
-    for (BaseRecord committed : committedList) {
-      for (BaseRecord match : matchList) {
-        try {
-          if (match.getPrimaryKey().equals(committed.getPrimaryKey())) {
-            if (validateRecord(match, committed, false)) {
-              matchingCount++;
-            }
-            break;
-          }
-        } catch (Exception ex) {
-        }
-      }
-    }
-    return matchingCount;
-  }
-
-  public <T extends BaseRecord> void testRemove(
-      StateStoreDriver driver, Class<T> clazz)
-          throws IllegalArgumentException, IllegalAccessException, IOException 
{
-
-    // Remove all
-    assertTrue(driver.removeAll(clazz));
-    QueryResult<T> records = driver.get(clazz);
-    assertTrue(records.getRecords().isEmpty());
-
-    // Insert multiple
-    List<T> insertList = new ArrayList<>();
-    for (int i = 0; i < 10; i++) {
-      T newRecord = generateFakeRecord(clazz);
-      insertList.add(newRecord);
-    }
-
-    // Verify
-    assertTrue(driver.putAll(insertList, false, true));
-    records = driver.get(clazz);
-    assertEquals(records.getRecords().size(), 10);
-
-    // Remove Single
-    assertTrue(driver.remove(records.getRecords().get(0)));
-
-    // Verify
-    records = driver.get(clazz);
-    assertEquals(records.getRecords().size(), 9);
-
-    // Remove with filter
-    final T firstRecord = records.getRecords().get(0);
-    final Query<T> query0 = new Query<T>(firstRecord);
-    assertTrue(driver.remove(clazz, query0) > 0);
-
-    final T secondRecord = records.getRecords().get(1);
-    final Query<T> query1 = new Query<T>(secondRecord);
-    assertTrue(driver.remove(clazz, query1) > 0);
-
-    // Verify
-    records = driver.get(clazz);
-    assertEquals(records.getRecords().size(), 7);
-
-    // Remove all
-    assertTrue(driver.removeAll(clazz));
-
-    // Verify
-    records = driver.get(clazz);
-    assertTrue(records.getRecords().isEmpty());
-  }
-
-  public void testInsert(StateStoreDriver driver)
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testInsert(driver, MembershipState.class);
-    testInsert(driver, MountTable.class);
-  }
-
-  public void testPut(StateStoreDriver driver)
-      throws IllegalArgumentException, ReflectiveOperationException,
-      IOException, SecurityException {
-    testPut(driver, MembershipState.class);
-    testPut(driver, MountTable.class);
-  }
-
-  public void testRemove(StateStoreDriver driver)
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testRemove(driver, MembershipState.class);
-    testRemove(driver, MountTable.class);
-  }
-
-  public void testFetchErrors(StateStoreDriver driver)
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testFetchErrors(driver, MembershipState.class);
-    testFetchErrors(driver, MountTable.class);
-  }
-
-  public void testMetrics(StateStoreDriver driver)
-      throws IOException, IllegalArgumentException, IllegalAccessException {
-
-    MountTable insertRecord =
-        this.generateFakeRecord(MountTable.class);
-
-    // Put single
-    StateStoreMetrics metrics = stateStore.getMetrics();
-    assertEquals(0, metrics.getWriteOps());
-    driver.put(insertRecord, true, false);
-    assertEquals(1, metrics.getWriteOps());
-
-    // Put multiple
-    metrics.reset();
-    assertEquals(0, metrics.getWriteOps());
-    driver.put(insertRecord, true, false);
-    assertEquals(1, metrics.getWriteOps());
-
-    // Get Single
-    metrics.reset();
-    assertEquals(0, metrics.getReadOps());
-
-    final String querySourcePath = insertRecord.getSourcePath();
-    MountTable partial = MountTable.newInstance();
-    partial.setSourcePath(querySourcePath);
-    final Query<MountTable> query = new Query<>(partial);
-    driver.get(MountTable.class, query);
-    assertEquals(1, metrics.getReadOps());
-
-    // GetAll
-    metrics.reset();
-    assertEquals(0, metrics.getReadOps());
-    driver.get(MountTable.class);
-    assertEquals(1, metrics.getReadOps());
-
-    // GetMultiple
-    metrics.reset();
-    assertEquals(0, metrics.getReadOps());
-    driver.getMultiple(MountTable.class, query);
-    assertEquals(1, metrics.getReadOps());
-
-    // Insert fails
-    metrics.reset();
-    assertEquals(0, metrics.getFailureOps());
-    driver.put(insertRecord, false, true);
-    assertEquals(1, metrics.getFailureOps());
-
-    // Remove single
-    metrics.reset();
-    assertEquals(0, metrics.getRemoveOps());
-    driver.remove(insertRecord);
-    assertEquals(1, metrics.getRemoveOps());
-
-    // Remove multiple
-    metrics.reset();
-    driver.put(insertRecord, true, false);
-    assertEquals(0, metrics.getRemoveOps());
-    driver.remove(MountTable.class, query);
-    assertEquals(1, metrics.getRemoveOps());
-
-    // Remove all
-    metrics.reset();
-    driver.put(insertRecord, true, false);
-    assertEquals(0, metrics.getRemoveOps());
-    driver.removeAll(MountTable.class);
-    assertEquals(1, metrics.getRemoveOps());
-  }
-
-  /**
-   * Sets the value of a field on the object.
-   *
-   * @param fieldName The string name of the field.
-   * @param data The data to pass to the field's setter.
-   *
-   * @return True if successful, fails if failed.
-   */
-  private static boolean setField(
-      BaseRecord record, String fieldName, Object data) {
-
-    Method m = locateSetter(record, fieldName);
-    if (m != null) {
-      try {
-        m.invoke(record, data);
-      } catch (Exception e) {
-        LOG.error("Cannot set field " + fieldName + " on object "
-            + record.getClass().getName() + " to data " + data + " of type "
-            + data.getClass(), e);
-        return false;
-      }
-    }
-    return true;
-  }
-
-  /**
-   * Finds the appropriate setter for a field name.
-   *
-   * @param fieldName The legacy name of the field.
-   * @return The matching setter or null if not found.
-   */
-  private static Method locateSetter(BaseRecord record, String fieldName) {
-    for (Method m : record.getClass().getMethods()) {
-      if (m.getName().equalsIgnoreCase("set" + fieldName)) {
-        return m;
-      }
-    }
-    return null;
-  }
-
-  /**
-   * Returns all serializable fields in the object.
-   *
-   * @return Map with the fields.
-   */
-  private static Map<String, Class<?>> getFields(BaseRecord record) {
-    Map<String, Class<?>> getters = new HashMap<>();
-    for (Method m : record.getClass().getDeclaredMethods()) {
-      if (m.getName().startsWith("get")) {
-        try {
-          Class<?> type = m.getReturnType();
-          char[] c = m.getName().substring(3).toCharArray();
-          c[0] = Character.toLowerCase(c[0]);
-          String key = new String(c);
-          getters.put(key, type);
-        } catch (Exception e) {
-          LOG.error("Cannot execute getter " + m.getName()
-              + " on object " + record);
-        }
-      }
-    }
-    return getters;
-  }
-
-  /**
-   * Get the type of a field.
-   *
-   * @param fieldName
-   * @return Field type
-   */
-  private static Class<?> getFieldType(BaseRecord record, String fieldName) {
-    Method m = locateGetter(record, fieldName);
-    return m.getReturnType();
-  }
-
-  /**
-   * Fetches the value for a field name.
-   *
-   * @param fieldName the legacy name of the field.
-   * @return The field data or null if not found.
-   */
-  private static Object getField(BaseRecord record, String fieldName) {
-    Object result = null;
-    Method m = locateGetter(record, fieldName);
-    if (m != null) {
-      try {
-        result = m.invoke(record);
-      } catch (Exception e) {
-        LOG.error("Cannot get field " + fieldName + " on object " + record);
-      }
-    }
-    return result;
-  }
-
-  /**
-   * Finds the appropriate getter for a field name.
-   *
-   * @param fieldName The legacy name of the field.
-   * @return The matching getter or null if not found.
-   */
-  private static Method locateGetter(BaseRecord record, String fieldName) {
-    for (Method m : record.getClass().getMethods()) {
-      if (m.getName().equalsIgnoreCase("get" + fieldName)) {
-        return m;
-      }
-    }
-    return null;
-  }
-
-  /**
-   * Expands a data object from the store into an record object. Default store
-   * data type is a String. Override if additional serialization is required.
-   *
-   * @param data Object containing the serialized data. Only string is
-   *          supported.
-   * @param clazz Target object class to hold the deserialized data.
-   * @return An instance of the target data object initialized with the
-   *         deserialized data.
-   */
-  @Deprecated
-  @SuppressWarnings({ "unchecked", "rawtypes" })
-  private static <T> T fromString(String data, Class<T> clazz) {
-
-    if (data.equals("null")) {
-      return null;
-    } else if (clazz == String.class) {
-      return (T) data;
-    } else if (clazz == Long.class || clazz == long.class) {
-      return (T) Long.valueOf(data);
-    } else if (clazz == Integer.class || clazz == int.class) {
-      return (T) Integer.valueOf(data);
-    } else if (clazz == Double.class || clazz == double.class) {
-      return (T) Double.valueOf(data);
-    } else if (clazz == Float.class || clazz == float.class) {
-      return (T) Float.valueOf(data);
-    } else if (clazz == Boolean.class || clazz == boolean.class) {
-      return (T) Boolean.valueOf(data);
-    } else if (clazz.isEnum()) {
-      return (T) Enum.valueOf((Class<Enum>) clazz, data);
-    }
-    return null;
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hadoop/blob/87700d45/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFile.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFile.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFile.java
deleted file mode 100644
index a8a9020..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFile.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * 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.hadoop.hdfs.server.federation.store.driver;
-
-import static 
org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils.getStateStoreConfiguration;
-
-import java.io.IOException;
-
-import org.apache.hadoop.conf.Configuration;
-import 
org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreFileImpl;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * Test the FileSystem (e.g., HDFS) implementation of the State Store driver.
- */
-public class TestStateStoreFile extends TestStateStoreDriverBase {
-
-  @BeforeClass
-  public static void setupCluster() throws Exception {
-    Configuration conf = getStateStoreConfiguration(StateStoreFileImpl.class);
-    getStateStore(conf);
-  }
-
-  @Before
-  public void startup() throws IOException {
-    removeAll(getStateStoreDriver());
-  }
-
-  @Test
-  public void testInsert()
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testInsert(getStateStoreDriver());
-  }
-
-  @Test
-  public void testUpdate()
-      throws IllegalArgumentException, ReflectiveOperationException,
-      IOException, SecurityException {
-    testPut(getStateStoreDriver());
-  }
-
-  @Test
-  public void testDelete()
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testRemove(getStateStoreDriver());
-  }
-
-  @Test
-  public void testFetchErrors()
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testFetchErrors(getStateStoreDriver());
-  }
-
-  @Test
-  public void testMetrics()
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testMetrics(getStateStoreDriver());
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hadoop/blob/87700d45/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFileBase.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFileBase.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFileBase.java
deleted file mode 100644
index 9adfe33..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFileBase.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * 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.hadoop.hdfs.server.federation.store.driver;
-
-import static 
org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreFileBaseImpl.isOldTempRecord;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.hadoop.util.Time;
-import org.junit.Test;
-
-/**
- * Tests for the State Store file based implementation.
- */
-public class TestStateStoreFileBase {
-
-  @Test
-  public void testTempOld() {
-    assertFalse(isOldTempRecord("test.txt"));
-    assertFalse(isOldTempRecord("testfolder/test.txt"));
-
-    long tnow = Time.now();
-    String tmpFile1 = "test." + tnow + ".tmp";
-    assertFalse(isOldTempRecord(tmpFile1));
-
-    long told = Time.now() - TimeUnit.MINUTES.toMillis(1);
-    String tmpFile2 = "test." + told + ".tmp";
-    assertTrue(isOldTempRecord(tmpFile2));
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hadoop/blob/87700d45/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFileSystem.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFileSystem.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFileSystem.java
deleted file mode 100644
index 8c4b188..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreFileSystem.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * 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.hadoop.hdfs.server.federation.store.driver;
-
-import java.io.IOException;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hdfs.MiniDFSCluster;
-import 
org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils;
-import 
org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreFileSystemImpl;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * Test the FileSystem (e.g., HDFS) implementation of the State Store driver.
- */
-public class TestStateStoreFileSystem extends TestStateStoreDriverBase {
-
-  private static MiniDFSCluster dfsCluster;
-
-  @BeforeClass
-  public static void setupCluster() throws Exception {
-    Configuration conf = FederationStateStoreTestUtils
-        .getStateStoreConfiguration(StateStoreFileSystemImpl.class);
-    conf.set(StateStoreFileSystemImpl.FEDERATION_STORE_FS_PATH,
-        "/hdfs-federation/");
-
-    // Create HDFS cluster to back the state tore
-    MiniDFSCluster.Builder builder = new MiniDFSCluster.Builder(conf);
-    builder.numDataNodes(1);
-    dfsCluster = builder.build();
-    dfsCluster.waitClusterUp();
-    getStateStore(conf);
-  }
-
-  @AfterClass
-  public static void tearDownCluster() {
-    if (dfsCluster != null) {
-      dfsCluster.shutdown();
-    }
-  }
-
-  @Before
-  public void startup() throws IOException {
-    removeAll(getStateStoreDriver());
-  }
-
-  @Test
-  public void testInsert()
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testInsert(getStateStoreDriver());
-  }
-
-  @Test
-  public void testUpdate() throws IllegalArgumentException, IOException,
-      SecurityException, ReflectiveOperationException {
-    testPut(getStateStoreDriver());
-  }
-
-  @Test
-  public void testDelete()
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testRemove(getStateStoreDriver());
-  }
-
-  @Test
-  public void testFetchErrors()
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testFetchErrors(getStateStoreDriver());
-  }
-
-  @Test
-  public void testMetrics()
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testMetrics(getStateStoreDriver());
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hadoop/blob/87700d45/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreZK.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreZK.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreZK.java
deleted file mode 100644
index 36353ff..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreZK.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * 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.hadoop.hdfs.server.federation.store.driver;
-
-import static 
org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils.getStateStoreConfiguration;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.curator.framework.CuratorFramework;
-import org.apache.curator.framework.CuratorFrameworkFactory;
-import org.apache.curator.retry.RetryNTimes;
-import org.apache.curator.test.TestingServer;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.CommonConfigurationKeys;
-import org.apache.hadoop.hdfs.DFSConfigKeys;
-import 
org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreZooKeeperImpl;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * Test the ZooKeeper implementation of the State Store driver.
- */
-public class TestStateStoreZK extends TestStateStoreDriverBase {
-
-  private static TestingServer curatorTestingServer;
-  private static CuratorFramework curatorFramework;
-
-  @BeforeClass
-  public static void setupCluster() throws Exception {
-    curatorTestingServer = new TestingServer();
-    curatorTestingServer.start();
-    String connectString = curatorTestingServer.getConnectString();
-    curatorFramework = CuratorFrameworkFactory.builder()
-        .connectString(connectString)
-        .retryPolicy(new RetryNTimes(100, 100))
-        .build();
-    curatorFramework.start();
-
-    // Create the ZK State Store
-    Configuration conf =
-        getStateStoreConfiguration(StateStoreZooKeeperImpl.class);
-    conf.set(CommonConfigurationKeys.ZK_ADDRESS, connectString);
-    // Disable auto-repair of connection
-    conf.setLong(DFSConfigKeys.FEDERATION_STORE_CONNECTION_TEST_MS,
-        TimeUnit.HOURS.toMillis(1));
-    getStateStore(conf);
-  }
-
-  @AfterClass
-  public static void tearDownCluster() {
-    curatorFramework.close();
-    try {
-      curatorTestingServer.stop();
-    } catch (IOException e) {
-    }
-  }
-
-  @Before
-  public void startup() throws IOException {
-    removeAll(getStateStoreDriver());
-  }
-
-  @Test
-  public void testInsert()
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testInsert(getStateStoreDriver());
-  }
-
-  @Test
-  public void testUpdate()
-      throws IllegalArgumentException, ReflectiveOperationException,
-      IOException, SecurityException {
-    testPut(getStateStoreDriver());
-  }
-
-  @Test
-  public void testDelete()
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testRemove(getStateStoreDriver());
-  }
-
-  @Test
-  public void testFetchErrors()
-      throws IllegalArgumentException, IllegalAccessException, IOException {
-    testFetchErrors(getStateStoreDriver());
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hadoop/blob/87700d45/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/records/TestMembershipState.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/records/TestMembershipState.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/records/TestMembershipState.java
deleted file mode 100644
index d922414..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/store/records/TestMembershipState.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/**
- * 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.hadoop.hdfs.server.federation.store.records;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-
-import 
org.apache.hadoop.hdfs.server.federation.resolver.FederationNamenodeServiceState;
-import 
org.apache.hadoop.hdfs.server.federation.store.driver.StateStoreSerializer;
-import org.junit.Test;
-
-/**
- * Test the Membership State records.
- */
-public class TestMembershipState {
-
-  private static final String ROUTER = "router";
-  private static final String NAMESERVICE = "nameservice";
-  private static final String NAMENODE = "namenode";
-  private static final String CLUSTER_ID = "cluster";
-  private static final String BLOCKPOOL_ID = "blockpool";
-  private static final String RPC_ADDRESS = "rpcaddress";
-  private static final String SERVICE_ADDRESS = "serviceaddress";
-  private static final String LIFELINE_ADDRESS = "lifelineaddress";
-  private static final String WEB_ADDRESS = "webaddress";
-  private static final boolean SAFE_MODE = false;
-
-  private static final long DATE_CREATED = 100;
-  private static final long DATE_MODIFIED = 200;
-
-  private static final long NUM_BLOCKS = 300;
-  private static final long NUM_FILES = 400;
-  private static final int NUM_DEAD = 500;
-  private static final int NUM_ACTIVE = 600;
-  private static final int NUM_DECOM = 700;
-  private static final int NUM_DECOM_ACTIVE = 800;
-  private static final int NUM_DECOM_DEAD = 900;
-  private static final long NUM_BLOCK_MISSING = 1000;
-
-  private static final long TOTAL_SPACE = 1100;
-  private static final long AVAILABLE_SPACE = 1200;
-
-  private static final FederationNamenodeServiceState STATE =
-      FederationNamenodeServiceState.ACTIVE;
-
-  private MembershipState createRecord() throws IOException {
-
-    MembershipState record = MembershipState.newInstance(
-        ROUTER, NAMESERVICE, NAMENODE, CLUSTER_ID,
-        BLOCKPOOL_ID, RPC_ADDRESS, SERVICE_ADDRESS, LIFELINE_ADDRESS,
-        WEB_ADDRESS, STATE, SAFE_MODE);
-    record.setDateCreated(DATE_CREATED);
-    record.setDateModified(DATE_MODIFIED);
-
-    MembershipStats stats = MembershipStats.newInstance();
-    stats.setNumOfBlocks(NUM_BLOCKS);
-    stats.setNumOfFiles(NUM_FILES);
-    stats.setNumOfActiveDatanodes(NUM_ACTIVE);
-    stats.setNumOfDeadDatanodes(NUM_DEAD);
-    stats.setNumOfDecommissioningDatanodes(NUM_DECOM);
-    stats.setNumOfDecomActiveDatanodes(NUM_DECOM_ACTIVE);
-    stats.setNumOfDecomDeadDatanodes(NUM_DECOM_DEAD);
-    stats.setNumOfBlocksMissing(NUM_BLOCK_MISSING);
-    stats.setTotalSpace(TOTAL_SPACE);
-    stats.setAvailableSpace(AVAILABLE_SPACE);
-    record.setStats(stats);
-    return record;
-  }
-
-  private void validateRecord(MembershipState record) throws IOException {
-
-    assertEquals(ROUTER, record.getRouterId());
-    assertEquals(NAMESERVICE, record.getNameserviceId());
-    assertEquals(CLUSTER_ID, record.getClusterId());
-    assertEquals(BLOCKPOOL_ID, record.getBlockPoolId());
-    assertEquals(RPC_ADDRESS, record.getRpcAddress());
-    assertEquals(WEB_ADDRESS, record.getWebAddress());
-    assertEquals(STATE, record.getState());
-    assertEquals(SAFE_MODE, record.getIsSafeMode());
-    assertEquals(DATE_CREATED, record.getDateCreated());
-    assertEquals(DATE_MODIFIED, record.getDateModified());
-
-    MembershipStats stats = record.getStats();
-    assertEquals(NUM_BLOCKS, stats.getNumOfBlocks());
-    assertEquals(NUM_FILES, stats.getNumOfFiles());
-    assertEquals(NUM_ACTIVE, stats.getNumOfActiveDatanodes());
-    assertEquals(NUM_DEAD, stats.getNumOfDeadDatanodes());
-    assertEquals(NUM_DECOM, stats.getNumOfDecommissioningDatanodes());
-    assertEquals(NUM_DECOM_ACTIVE, stats.getNumOfDecomActiveDatanodes());
-    assertEquals(NUM_DECOM_DEAD, stats.getNumOfDecomDeadDatanodes());
-    assertEquals(TOTAL_SPACE, stats.getTotalSpace());
-    assertEquals(AVAILABLE_SPACE, stats.getAvailableSpace());
-  }
-
-  @Test
-  public void testGetterSetter() throws IOException {
-    MembershipState record = createRecord();
-    validateRecord(record);
-  }
-
-  @Test
-  public void testSerialization() throws IOException {
-
-    MembershipState record = createRecord();
-
-    StateStoreSerializer serializer = StateStoreSerializer.getSerializer();
-    String serializedString = serializer.serializeString(record);
-    MembershipState newRecord =
-        serializer.deserialize(serializedString, MembershipState.class);
-
-    validateRecord(newRecord);
-  }
-}
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to