/*************************************************************************** * Copyright (c) 2014 VMware, Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ***************************************************************************/ package com.vmware.bdd.placement; import com.vmware.bdd.placement.entity.BaseNode; import com.vmware.bdd.placement.exception.PlacementException; import com.vmware.bdd.placement.util.PlacementUtil; import org.testng.Assert; import org.testng.annotations.Test; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Test Case for placement exception */ public class PlacementExceptionTest { @Test public void testPLACEMENT_ERROR() { BaseNode placement1 = new BaseNode("hbase5-worker-0"); placement1.setTargetHost("host1"); BaseNode placement2 = new BaseNode("hbase5-worker-1"); placement2.setTargetHost("host2"); List<BaseNode> placedNodes = Arrays.asList(placement2, placement1); Map<String, List<String>> filteredHosts = new HashMap<>(); filteredHosts.put(PlacementUtil.NETWORK_NAMES, Arrays.asList("defaultNetwork", "dhcp")); filteredHosts.put(PlacementUtil.NO_NETWORKS_HOSTS, Arrays.asList("hbase5-worker-01", "hbase5-worker-02")); filteredHosts.put(PlacementUtil.NO_DATASTORE_HOSTS, Arrays.asList("host5")); filteredHosts.put(PlacementUtil.NO_DATASTORE_HOSTS_NODE_GROUP, Arrays.asList("worker")); filteredHosts.put(PlacementUtil.OUT_OF_SYNC_HOSTS, Arrays.asList("host3", "host4")); PlacementException pe = PlacementException.PLACEMENT_ERROR( PlacementException.OUT_OF_STORAGE_ON_HOST("host1"), placedNodes, filteredHosts); System.out.println(pe.getMessage()); Assert.assertEquals(pe.getMessage(), "Cannot find enough storage on host host1. Possible fixes:\n" + "You must synchronize the time of the following hosts [host3, host4] with the Serengeti Management Server to use them.\n" + "You must add these hosts [hbase5-worker-01, hbase5-worker-02] to the network [defaultNetwork, dhcp] to use them.\n" + "You must add datastores on these hosts [host5] to use them with the node group [worker].\n" + "Current node placement plan:\n" + "Node hbase5-worker-1 placed on host host2. Node hbase5-worker-0 placed on host host1. "); } }