|
@@ -0,0 +1,1265 @@
|
|
|
+/**
|
|
|
+ * 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.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
|
|
|
+ .validateSubClusterRegisterRequest(request);
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ Assert.fail(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // Execution with null request
|
|
|
+
|
|
|
+ try {
|
|
|
+ SubClusterRegisterRequest request = null;
|
|
|
+ FederationMembershipStateStoreInputValidator
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(request);
|
|
|
+ Assert.fail();
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ LOG.info(e.getMessage());
|
|
|
+ Assert.assertTrue(
|
|
|
+ e.getMessage().startsWith("Invalid capability information."));
|
|
|
+ }
|
|
|
+
|
|
|
+ // Execution with Empty Capability
|
|
|
+
|
|
|
+ subClusterInfo =
|
|
|
+ SubClusterInfo.newInstance(subClusterId, amRMServiceAddress,
|
|
|
+ clientRMServiceAddress, rmAdminServiceAddress, rmWebServiceAddress,
|
|
|
+ lastHeartBeat, stateNew, lastStartTime, capabilityEmpty);
|
|
|
+ try {
|
|
|
+ SubClusterRegisterRequest request =
|
|
|
+ SubClusterRegisterRequest.newInstance(subClusterInfo);
|
|
|
+ FederationMembershipStateStoreInputValidator
|
|
|
+ .validateSubClusterRegisterRequest(request);
|
|
|
+ Assert.fail();
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ LOG.info(e.getMessage());
|
|
|
+ Assert.assertTrue(
|
|
|
+ e.getMessage().startsWith("Invalid capability information."));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterRegisterRequest(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
|
|
|
+ .validateSubClusterDeregisterRequest(request);
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ Assert.fail(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // Execution with null request
|
|
|
+
|
|
|
+ try {
|
|
|
+ SubClusterDeregisterRequest request = null;
|
|
|
+ FederationMembershipStateStoreInputValidator
|
|
|
+ .validateSubClusterDeregisterRequest(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
|
|
|
+ .validateSubClusterDeregisterRequest(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
|
|
|
+ .validateSubClusterDeregisterRequest(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
|
|
|
+ .validateSubClusterDeregisterRequest(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
|
|
|
+ .validateSubClusterDeregisterRequest(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
|
|
|
+ .validateSubClusterHeartbeatRequest(request);
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ Assert.fail(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // Execution with null request
|
|
|
+
|
|
|
+ try {
|
|
|
+ SubClusterHeartbeatRequest request = null;
|
|
|
+ FederationMembershipStateStoreInputValidator
|
|
|
+ .validateSubClusterHeartbeatRequest(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
|
|
|
+ .validateSubClusterHeartbeatRequest(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
|
|
|
+ .validateSubClusterHeartbeatRequest(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
|
|
|
+ .validateSubClusterHeartbeatRequest(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
|
|
|
+ .validateSubClusterHeartbeatRequest(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
|
|
|
+ .validateSubClusterHeartbeatRequest(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
|
|
|
+ .validateSubClusterHeartbeatRequest(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
|
|
|
+ .validateGetSubClusterInfoRequest(request);
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ Assert.fail(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // Execution with null request
|
|
|
+
|
|
|
+ try {
|
|
|
+ GetSubClusterInfoRequest request = null;
|
|
|
+ FederationMembershipStateStoreInputValidator
|
|
|
+ .validateGetSubClusterInfoRequest(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
|
|
|
+ .validateGetSubClusterInfoRequest(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
|
|
|
+ .validateGetSubClusterInfoRequest(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
|
|
|
+ .validateAddApplicationHomeSubClusterRequest(request);
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ Assert.fail(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // Execution with null request
|
|
|
+
|
|
|
+ try {
|
|
|
+ AddApplicationHomeSubClusterRequest request = null;
|
|
|
+ FederationApplicationHomeSubClusterStoreInputValidator
|
|
|
+ .validateAddApplicationHomeSubClusterRequest(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
|
|
|
+ .validateAddApplicationHomeSubClusterRequest(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
|
|
|
+ .validateAddApplicationHomeSubClusterRequest(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
|
|
|
+ .validateAddApplicationHomeSubClusterRequest(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
|
|
|
+ .validateAddApplicationHomeSubClusterRequest(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
|
|
|
+ .validateUpdateApplicationHomeSubClusterRequest(request);
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ Assert.fail(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // Execution with null request
|
|
|
+
|
|
|
+ try {
|
|
|
+ UpdateApplicationHomeSubClusterRequest request = null;
|
|
|
+ FederationApplicationHomeSubClusterStoreInputValidator
|
|
|
+ .validateUpdateApplicationHomeSubClusterRequest(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
|
|
|
+ .validateUpdateApplicationHomeSubClusterRequest(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
|
|
|
+ .validateUpdateApplicationHomeSubClusterRequest(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
|
|
|
+ .validateUpdateApplicationHomeSubClusterRequest(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
|
|
|
+ .validateUpdateApplicationHomeSubClusterRequest(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
|
|
|
+ .validateGetApplicationHomeSubClusterRequest(request);
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ Assert.fail(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // Execution with null request
|
|
|
+
|
|
|
+ try {
|
|
|
+ GetApplicationHomeSubClusterRequest request = null;
|
|
|
+ FederationApplicationHomeSubClusterStoreInputValidator
|
|
|
+ .validateGetApplicationHomeSubClusterRequest(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
|
|
|
+ .validateGetApplicationHomeSubClusterRequest(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
|
|
|
+ .validateDeleteApplicationHomeSubClusterRequest(request);
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ Assert.fail(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // Execution with null request
|
|
|
+
|
|
|
+ try {
|
|
|
+ DeleteApplicationHomeSubClusterRequest request = null;
|
|
|
+ FederationApplicationHomeSubClusterStoreInputValidator
|
|
|
+ .validateDeleteApplicationHomeSubClusterRequest(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
|
|
|
+ .validateDeleteApplicationHomeSubClusterRequest(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
|
|
|
+ .validateGetSubClusterPolicyConfigurationRequest(request);
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ Assert.fail(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // Execution with null request
|
|
|
+
|
|
|
+ try {
|
|
|
+ GetSubClusterPolicyConfigurationRequest request = null;
|
|
|
+ FederationPolicyStoreInputValidator
|
|
|
+ .validateGetSubClusterPolicyConfigurationRequest(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
|
|
|
+ .validateGetSubClusterPolicyConfigurationRequest(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
|
|
|
+ .validateGetSubClusterPolicyConfigurationRequest(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
|
|
|
+ .validateSetSubClusterPolicyConfigurationRequest(request);
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ Assert.fail(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ // Execution with null request
|
|
|
+
|
|
|
+ try {
|
|
|
+ SetSubClusterPolicyConfigurationRequest request = null;
|
|
|
+ FederationPolicyStoreInputValidator
|
|
|
+ .validateSetSubClusterPolicyConfigurationRequest(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
|
|
|
+ .validateSetSubClusterPolicyConfigurationRequest(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
|
|
|
+ .validateSetSubClusterPolicyConfigurationRequest(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
|
|
|
+ .validateSetSubClusterPolicyConfigurationRequest(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
|
|
|
+ .validateSetSubClusterPolicyConfigurationRequest(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
|
|
|
+ .validateSetSubClusterPolicyConfigurationRequest(request);
|
|
|
+ Assert.fail();
|
|
|
+ } catch (FederationStateStoreInvalidInputException e) {
|
|
|
+ Assert.assertTrue(e.getMessage().startsWith("Missing Policy Type."));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|