@Test
  public void testMasterMasterIsElected() {
    // CASE 1: Got MasterIsElected for me. Should remain master.
    HighAvailabilityMemberState newState = MASTER.masterIsElected(context, myId);
    assertEquals(MASTER, newState);

    // CASE 2: Got MasterIsElected for someone else. Should switch to pending.
    HighAvailabilityMemberState newStateCase2 = MASTER.masterIsElected(context, new InstanceId(2));
    assertEquals(PENDING, newStateCase2);
  }
  @Test
  public void testMasterMasterIsAvailable() {
    // CASE 1: Got MasterIsAvailable for someone else - should fail.
    try {
      MASTER.masterIsAvailable(context, new InstanceId(2), SampleUri);
      fail("Should not allow master switch with missing masterIsElected");
    } catch (RuntimeException e) {
      // wonderful
    }

    // CASE 2: Got MasterIsAvailable for us - it's ok, should pass
    HighAvailabilityMemberState newState = MASTER.masterIsAvailable(context, myId, SampleUri);
    assertEquals(MASTER, newState);
  }
  @Test
  public void testMasterSlaveIsAvailable() {
    // CASE 1: Got SlaveIsAvailable for me - should fail.
    try {
      MASTER.slaveIsAvailable(context, myId, SampleUri);
      fail("MASTER to SLAVE is not allowed");
    } catch (RuntimeException e) {
      // awesome
    }

    // CASE 2: Got SlaveIsAvailable for someone else - who cares? Should succeed.
    HighAvailabilityMemberState newState =
        MASTER.slaveIsAvailable(context, new InstanceId(2), SampleUri);
    assertEquals(MASTER, newState);
  }