blob: 5a5703e6f6582e2edfa87e767c9a4b78f0a507b9 [file] [log] [blame]
/**
* 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.yarn.server.federation.store.utils;
import java.nio.ByteBuffer;
import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.server.federation.store.exception.FederationStateStoreInvalidInputException;
import org.apache.hadoop.yarn.server.federation.store.records.AddApplicationHomeSubClusterRequest;
import org.apache.hadoop.yarn.server.federation.store.records.ApplicationHomeSubCluster;
import org.apache.hadoop.yarn.server.federation.store.records.DeleteApplicationHomeSubClusterRequest;
import org.apache.hadoop.yarn.server.federation.store.records.GetApplicationHomeSubClusterRequest;
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterInfoRequest;
import org.apache.hadoop.yarn.server.federation.store.records.GetSubClusterPolicyConfigurationRequest;
import org.apache.hadoop.yarn.server.federation.store.records.SetSubClusterPolicyConfigurationRequest;
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterDeregisterRequest;
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterHeartbeatRequest;
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterId;
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterInfo;
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterPolicyConfiguration;
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterRegisterRequest;
import org.apache.hadoop.yarn.server.federation.store.records.SubClusterState;
import org.apache.hadoop.yarn.server.federation.store.records.UpdateApplicationHomeSubClusterRequest;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Unit tests for FederationApplicationInputValidator,
* FederationMembershipInputValidator, and FederationPolicyInputValidator.
*/
public class TestFederationStateStoreInputValidator {
private static final Logger LOG =
LoggerFactory.getLogger(TestFederationStateStoreInputValidator.class);
private static SubClusterId subClusterId;
private static String amRMServiceAddress;
private static String clientRMServiceAddress;
private static String rmAdminServiceAddress;
private static String rmWebServiceAddress;
private static int lastHeartBeat;
private static SubClusterState stateNew;
private static SubClusterState stateLost;
private static ApplicationId appId;
private static int lastStartTime;
private static String capability;
private static String queue;
private static String type;
private static ByteBuffer params;
private static SubClusterId subClusterIdInvalid;
private static SubClusterId subClusterIdNull;
private static int lastHeartBeatNegative;
private static int lastStartTimeNegative;
private static SubClusterState stateNull;
private static ApplicationId appIdNull;
private static String capabilityNull;
private static String capabilityEmpty;
private static String addressNull;
private static String addressEmpty;
private static String addressWrong;
private static String addressWrongPort;
private static String queueEmpty;
private static String queueNull;
private static String typeEmpty;
private static String typeNull;
@BeforeClass
public static void setUp() {
subClusterId = SubClusterId.newInstance("abc");
amRMServiceAddress = "localhost:8032";
clientRMServiceAddress = "localhost:8034";
rmAdminServiceAddress = "localhost:8031";
rmWebServiceAddress = "localhost:8088";
lastHeartBeat = 1000;
stateNew = SubClusterState.SC_NEW;
stateLost = SubClusterState.SC_LOST;
lastStartTime = 1000;
capability = "Memory VCores";
appId = ApplicationId.newInstance(lastStartTime, 1);
queue = "default";
type = "random";
params = ByteBuffer.allocate(10);
params.put((byte) 0xFF);
subClusterIdInvalid = SubClusterId.newInstance("");
subClusterIdNull = null;
lastHeartBeatNegative = -10;
lastStartTimeNegative = -10;
stateNull = null;
appIdNull = null;
capabilityNull = null;
capabilityEmpty = "";
addressNull = null;
addressEmpty = "";
addressWrong = "AddressWrong";
addressWrongPort = "Address:WrongPort";
queueEmpty = "";
queueNull = null;
typeEmpty = "";
typeNull = null;
}
@Test
public void testValidateSubClusterRegisterRequest() {
// Execution with valid inputs
SubClusterInfo subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
// Execution with null request
try {
SubClusterRegisterRequest request = null;
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubClusterRegister Request."));
}
// Execution with null SubClusterInfo
subClusterInfo = null;
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubCluster Information."));
}
// Execution with Null SubClusterId
subClusterInfo =
SubClusterInfo.newInstance(subClusterIdNull, amRMServiceAddress,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubCluster Id information."));
}
// Execution with Invalid SubClusterId
subClusterInfo =
SubClusterInfo.newInstance(subClusterIdInvalid, amRMServiceAddress,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Invalid SubCluster Id information."));
}
// Execution with Null State
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNull, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubCluster State information."));
}
// Execution with Null Capability
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTime, capabilityNull);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
// Execution with Empty Capability
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTime, capabilityEmpty);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
}
@Test
public void testValidateSubClusterRegisterRequestTimestamp() {
// Execution with Negative Last Heartbeat
SubClusterInfo subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeatNegative, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Invalid timestamp information."));
}
// Execution with Negative Last StartTime
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTimeNegative, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Invalid timestamp information."));
}
}
@Test
public void testValidateSubClusterRegisterRequestAddress() {
// Execution with Null Address for amRMServiceAddress
SubClusterInfo subClusterInfo =
SubClusterInfo.newInstance(subClusterId, addressNull,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage()
.startsWith("Missing SubCluster Endpoint information."));
}
// Execution with Empty Address for amRMServiceAddress
subClusterInfo = SubClusterInfo.newInstance(subClusterId, addressEmpty,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage()
.startsWith("Missing SubCluster Endpoint information."));
}
// Execution with Null Address for clientRMServiceAddress
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
addressNull, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage()
.startsWith("Missing SubCluster Endpoint information."));
}
// Execution with Empty Address for clientRMServiceAddress
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
addressEmpty, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage()
.startsWith("Missing SubCluster Endpoint information."));
}
// Execution with Null Address for rmAdminServiceAddress
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
clientRMServiceAddress, addressNull, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage()
.startsWith("Missing SubCluster Endpoint information."));
}
// Execution with Empty Address for rmAdminServiceAddress
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
clientRMServiceAddress, addressEmpty, rmWebServiceAddress,
lastHeartBeat, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage()
.startsWith("Missing SubCluster Endpoint information."));
}
// Execution with Null Address for rmWebServiceAddress
subClusterInfo = SubClusterInfo.newInstance(subClusterId,
amRMServiceAddress, clientRMServiceAddress, rmAdminServiceAddress,
addressNull, lastHeartBeat, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage()
.startsWith("Missing SubCluster Endpoint information."));
}
// Execution with Empty Address for rmWebServiceAddress
subClusterInfo = SubClusterInfo.newInstance(subClusterId,
amRMServiceAddress, clientRMServiceAddress, rmAdminServiceAddress,
addressEmpty, lastHeartBeat, stateNew, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage()
.startsWith("Missing SubCluster Endpoint information."));
}
}
@Test
public void testValidateSubClusterRegisterRequestAddressInvalid() {
// Address is not in host:port format for amRMService
SubClusterInfo subClusterInfo =
SubClusterInfo.newInstance(subClusterId, addressWrong,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNull, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage().contains("valid host:port authority:"));
}
// Address is not in host:port format for clientRMService
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
addressWrong, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNull, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage().contains("valid host:port authority:"));
}
// Address is not in host:port format for rmAdminService
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
clientRMServiceAddress, addressWrong, rmWebServiceAddress,
lastHeartBeat, stateNull, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage().contains("valid host:port authority:"));
}
// Address is not in host:port format for rmWebService
subClusterInfo = SubClusterInfo.newInstance(subClusterId,
amRMServiceAddress, clientRMServiceAddress, rmAdminServiceAddress,
addressWrong, lastHeartBeat, stateNull, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage().contains("valid host:port authority:"));
}
// Port is not an integer for amRMService
subClusterInfo = SubClusterInfo.newInstance(subClusterId, addressWrongPort,
clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNull, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage().contains("valid host:port authority:"));
}
// Port is not an integer for clientRMService
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
addressWrongPort, rmAdminServiceAddress, rmWebServiceAddress,
lastHeartBeat, stateNull, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage().contains("valid host:port authority:"));
}
// Port is not an integer for rmAdminService
subClusterInfo =
SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
clientRMServiceAddress, addressWrongPort, rmWebServiceAddress,
lastHeartBeat, stateNull, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage().contains("valid host:port authority:"));
}
// Port is not an integer for rmWebService
subClusterInfo = SubClusterInfo.newInstance(subClusterId,
amRMServiceAddress, clientRMServiceAddress, rmAdminServiceAddress,
addressWrongPort, lastHeartBeat, stateNull, lastStartTime, capability);
try {
SubClusterRegisterRequest request =
SubClusterRegisterRequest.newInstance(subClusterInfo);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage().contains("valid host:port authority:"));
}
}
@Test
public void testValidateSubClusterDeregisterRequest() {
// Execution with valid inputs
try {
SubClusterDeregisterRequest request =
SubClusterDeregisterRequest.newInstance(subClusterId, stateLost);
FederationMembershipStateStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
// Execution with null request
try {
SubClusterDeregisterRequest request = null;
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubClusterDeregister Request."));
}
// Execution with null SubClusterId
try {
SubClusterDeregisterRequest request =
SubClusterDeregisterRequest.newInstance(subClusterIdNull, stateLost);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubCluster Id information."));
}
// Execution with invalid SubClusterId
try {
SubClusterDeregisterRequest request = SubClusterDeregisterRequest
.newInstance(subClusterIdInvalid, stateLost);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Invalid SubCluster Id information."));
}
// Execution with null SubClusterState
try {
SubClusterDeregisterRequest request =
SubClusterDeregisterRequest.newInstance(subClusterId, stateNull);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubCluster State information."));
}
// Execution with invalid SubClusterState
try {
SubClusterDeregisterRequest request =
SubClusterDeregisterRequest.newInstance(subClusterId, stateNew);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(e.getMessage().startsWith("Invalid non-final state: "));
}
}
@Test
public void testSubClusterHeartbeatRequest() {
// Execution with valid inputs
try {
SubClusterHeartbeatRequest request = SubClusterHeartbeatRequest
.newInstance(subClusterId, lastHeartBeat, stateLost, capability);
FederationMembershipStateStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
// Execution with null request
try {
SubClusterHeartbeatRequest request = null;
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubClusterHeartbeat Request."));
}
// Execution with null SubClusterId
try {
SubClusterHeartbeatRequest request = SubClusterHeartbeatRequest
.newInstance(subClusterIdNull, lastHeartBeat, stateLost, capability);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubCluster Id information."));
}
// Execution with invalid SubClusterId
try {
SubClusterHeartbeatRequest request =
SubClusterHeartbeatRequest.newInstance(subClusterIdInvalid,
lastHeartBeat, stateLost, capability);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Invalid SubCluster Id information."));
}
// Execution with null SubClusterState
try {
SubClusterHeartbeatRequest request = SubClusterHeartbeatRequest
.newInstance(subClusterId, lastHeartBeat, stateNull, capability);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubCluster State information."));
}
// Execution with negative Last Heartbeat
try {
SubClusterHeartbeatRequest request =
SubClusterHeartbeatRequest.newInstance(subClusterId,
lastHeartBeatNegative, stateLost, capability);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Invalid timestamp information."));
}
// Execution with null Capability
try {
SubClusterHeartbeatRequest request = SubClusterHeartbeatRequest
.newInstance(subClusterId, lastHeartBeat, stateLost, capabilityNull);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Invalid capability information."));
}
// Execution with empty Capability
try {
SubClusterHeartbeatRequest request = SubClusterHeartbeatRequest
.newInstance(subClusterId, lastHeartBeat, stateLost, capabilityEmpty);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Invalid capability information."));
}
}
@Test
public void testGetSubClusterInfoRequest() {
// Execution with valid inputs
try {
GetSubClusterInfoRequest request =
GetSubClusterInfoRequest.newInstance(subClusterId);
FederationMembershipStateStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
// Execution with null request
try {
GetSubClusterInfoRequest request = null;
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing GetSubClusterInfo Request."));
}
// Execution with null SubClusterId
try {
GetSubClusterInfoRequest request =
GetSubClusterInfoRequest.newInstance(subClusterIdNull);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubCluster Id information."));
}
// Execution with invalid SubClusterId
try {
GetSubClusterInfoRequest request =
GetSubClusterInfoRequest.newInstance(subClusterIdInvalid);
FederationMembershipStateStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Invalid SubCluster Id information."));
}
}
@Test
public void testAddApplicationHomeSubClusterRequest() {
// Execution with valid inputs
ApplicationHomeSubCluster applicationHomeSubCluster =
ApplicationHomeSubCluster.newInstance(appId, subClusterId);
try {
AddApplicationHomeSubClusterRequest request =
AddApplicationHomeSubClusterRequest
.newInstance(applicationHomeSubCluster);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
// Execution with null request
try {
AddApplicationHomeSubClusterRequest request = null;
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage()
.startsWith("Missing AddApplicationHomeSubCluster Request."));
}
// Execution with null ApplicationHomeSubCluster
applicationHomeSubCluster = null;
try {
AddApplicationHomeSubClusterRequest request =
AddApplicationHomeSubClusterRequest
.newInstance(applicationHomeSubCluster);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(
e.getMessage().startsWith("Missing ApplicationHomeSubCluster Info."));
}
// Execution with null SubClusterId
applicationHomeSubCluster =
ApplicationHomeSubCluster.newInstance(appId, subClusterIdNull);
try {
AddApplicationHomeSubClusterRequest request =
AddApplicationHomeSubClusterRequest
.newInstance(applicationHomeSubCluster);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubCluster Id information."));
}
// Execution with invalid SubClusterId
applicationHomeSubCluster =
ApplicationHomeSubCluster.newInstance(appId, subClusterIdInvalid);
try {
AddApplicationHomeSubClusterRequest request =
AddApplicationHomeSubClusterRequest
.newInstance(applicationHomeSubCluster);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Invalid SubCluster Id information."));
}
// Execution with Null ApplicationId
applicationHomeSubCluster =
ApplicationHomeSubCluster.newInstance(appIdNull, subClusterId);
try {
AddApplicationHomeSubClusterRequest request =
AddApplicationHomeSubClusterRequest
.newInstance(applicationHomeSubCluster);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage().startsWith("Missing Application Id."));
}
}
@Test
public void testUpdateApplicationHomeSubClusterRequest() {
// Execution with valid inputs
ApplicationHomeSubCluster applicationHomeSubCluster =
ApplicationHomeSubCluster.newInstance(appId, subClusterId);
try {
UpdateApplicationHomeSubClusterRequest request =
UpdateApplicationHomeSubClusterRequest
.newInstance(applicationHomeSubCluster);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
// Execution with null request
try {
UpdateApplicationHomeSubClusterRequest request = null;
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage()
.startsWith("Missing UpdateApplicationHomeSubCluster Request."));
}
// Execution with null ApplicationHomeSubCluster
applicationHomeSubCluster = null;
try {
UpdateApplicationHomeSubClusterRequest request =
UpdateApplicationHomeSubClusterRequest
.newInstance(applicationHomeSubCluster);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(
e.getMessage().startsWith("Missing ApplicationHomeSubCluster Info."));
}
// Execution with null SubClusteId
applicationHomeSubCluster =
ApplicationHomeSubCluster.newInstance(appId, subClusterIdNull);
try {
UpdateApplicationHomeSubClusterRequest request =
UpdateApplicationHomeSubClusterRequest
.newInstance(applicationHomeSubCluster);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Missing SubCluster Id information."));
}
// Execution with invalid SubClusterId
applicationHomeSubCluster =
ApplicationHomeSubCluster.newInstance(appId, subClusterIdInvalid);
try {
UpdateApplicationHomeSubClusterRequest request =
UpdateApplicationHomeSubClusterRequest
.newInstance(applicationHomeSubCluster);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
LOG.info(e.getMessage());
Assert.assertTrue(
e.getMessage().startsWith("Invalid SubCluster Id information."));
}
// Execution with null ApplicationId
applicationHomeSubCluster =
ApplicationHomeSubCluster.newInstance(appIdNull, subClusterId);
try {
UpdateApplicationHomeSubClusterRequest request =
UpdateApplicationHomeSubClusterRequest
.newInstance(applicationHomeSubCluster);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage().startsWith("Missing Application Id."));
}
}
@Test
public void testGetApplicationHomeSubClusterRequest() {
// Execution with valid inputs
try {
GetApplicationHomeSubClusterRequest request =
GetApplicationHomeSubClusterRequest.newInstance(appId);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
// Execution with null request
try {
GetApplicationHomeSubClusterRequest request = null;
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage()
.startsWith("Missing GetApplicationHomeSubCluster Request."));
}
// Execution with null ApplicationId
try {
GetApplicationHomeSubClusterRequest request =
GetApplicationHomeSubClusterRequest.newInstance(appIdNull);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage().startsWith("Missing Application Id."));
}
}
@Test
public void testDeleteApplicationHomeSubClusterRequestNull() {
// Execution with valid inputs
try {
DeleteApplicationHomeSubClusterRequest request =
DeleteApplicationHomeSubClusterRequest.newInstance(appId);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
// Execution with null request
try {
DeleteApplicationHomeSubClusterRequest request = null;
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage()
.startsWith("Missing DeleteApplicationHomeSubCluster Request."));
}
// Execution with null ApplicationId
try {
DeleteApplicationHomeSubClusterRequest request =
DeleteApplicationHomeSubClusterRequest.newInstance(appIdNull);
FederationApplicationHomeSubClusterStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage().startsWith("Missing Application Id."));
}
}
@Test
public void testGetSubClusterPolicyConfigurationRequest() {
// Execution with valid inputs
try {
GetSubClusterPolicyConfigurationRequest request =
GetSubClusterPolicyConfigurationRequest.newInstance(queue);
FederationPolicyStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
// Execution with null request
try {
GetSubClusterPolicyConfigurationRequest request = null;
FederationPolicyStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage()
.startsWith("Missing GetSubClusterPolicyConfiguration Request."));
}
// Execution with null queue id
try {
GetSubClusterPolicyConfigurationRequest request =
GetSubClusterPolicyConfigurationRequest.newInstance(queueNull);
FederationPolicyStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage().startsWith("Missing Queue."));
}
// Execution with empty queue id
try {
GetSubClusterPolicyConfigurationRequest request =
GetSubClusterPolicyConfigurationRequest.newInstance(queueEmpty);
FederationPolicyStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage().startsWith("Missing Queue."));
}
}
@Test
public void testSetSubClusterPolicyConfigurationRequest() {
// Execution with valid inputs
try {
SubClusterPolicyConfiguration policy =
SubClusterPolicyConfiguration.newInstance(queue, type, params);
SetSubClusterPolicyConfigurationRequest request =
SetSubClusterPolicyConfigurationRequest.newInstance(policy);
FederationPolicyStoreInputValidator
.validate(request);
} catch (FederationStateStoreInvalidInputException e) {
Assert.fail(e.getMessage());
}
// Execution with null request
try {
SetSubClusterPolicyConfigurationRequest request = null;
FederationPolicyStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage()
.startsWith("Missing SetSubClusterPolicyConfiguration Request."));
}
// Execution with null SubClusterPolicyConfiguration
try {
SubClusterPolicyConfiguration policy = null;
SetSubClusterPolicyConfigurationRequest request =
SetSubClusterPolicyConfigurationRequest.newInstance(policy);
FederationPolicyStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(
e.getMessage().startsWith("Missing SubClusterPolicyConfiguration."));
}
// Execution with null queue id
try {
SubClusterPolicyConfiguration policy =
SubClusterPolicyConfiguration.newInstance(queueNull, type, params);
SetSubClusterPolicyConfigurationRequest request =
SetSubClusterPolicyConfigurationRequest.newInstance(policy);
FederationPolicyStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage().startsWith("Missing Queue."));
}
// Execution with empty queue id
try {
SubClusterPolicyConfiguration policy =
SubClusterPolicyConfiguration.newInstance(queueEmpty, type, params);
SetSubClusterPolicyConfigurationRequest request =
SetSubClusterPolicyConfigurationRequest.newInstance(policy);
FederationPolicyStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage().startsWith("Missing Queue."));
}
// Execution with null policy type
try {
SubClusterPolicyConfiguration policy =
SubClusterPolicyConfiguration.newInstance(queue, typeNull, params);
SetSubClusterPolicyConfigurationRequest request =
SetSubClusterPolicyConfigurationRequest.newInstance(policy);
FederationPolicyStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage().startsWith("Missing Policy Type."));
}
// Execution with empty policy type
try {
SubClusterPolicyConfiguration policy =
SubClusterPolicyConfiguration.newInstance(queue, typeEmpty, params);
SetSubClusterPolicyConfigurationRequest request =
SetSubClusterPolicyConfigurationRequest.newInstance(policy);
FederationPolicyStoreInputValidator
.validate(request);
Assert.fail();
} catch (FederationStateStoreInvalidInputException e) {
Assert.assertTrue(e.getMessage().startsWith("Missing Policy Type."));
}
}
}